0

I've built a web application that has a small search facility. As part of my search, I offer the users the option to search by dollar amounts. I did some searching around and didn't find any solid examples or advice other than the "LIKE" clause doesn't operate on numbers in SQL, so my question is:

Can someone provide an example of an correct SQL statement to search against numbers with decimals in a database. For example, if some inputs 5234.32 as a currency search, I'd want the results to return any records whose "amount" column is 5xxx.xx. If the user entered 64.58, I'd want to return any records whose "amount" column is 6x.xx

Thanks in advance

4

3 に答える 3

2

の検索5xxx.xxは の検索と同じです5000 <= field AND field < 6000

DBMS が既存のインデックスを使用できなくなるため、フィールドを切り捨てないことをお勧めします。にインデックスがあると仮定すると、上記の範囲スキャンは非常に効率的fieldです。

于 2012-05-14T13:03:51.880 に答える
0

データベースによっては、おそらくこれを行うことができます。

-- Oracle
WHERE TRUNC(amount, -decimals) = TRUNC(:user_input, -decimals)

-- MySQL
WHERE TRUNCATE(amount, -decimals) = TRUNCATE(:user_input, -decimals)

decimalsつまり、保持したい小数点の左側の桁数、つまり

TRUNC(5234.32, -3) = 5000.00
TRUNC(64.58, -1)   = 60.00

SQL で小数を発見するばかげた方法は次のようになります。

-- Oracle
LENGTH(TO_CHAR(TRUNC(amount)))

-- MySQL
LENGTH(CAST(TRUNCATE(amount) AS CHAR))

もちろん、ブランコが回答で述べたように、これは遅くなる可能性があります

于 2012-05-14T13:01:01.003 に答える
0

varchar に変換して使用できますか?

それ以外の場合は、@ ypercube が述べたような算術演算を使用できます。

于 2012-05-14T13:02:00.787 に答える