3

mysql クエリ内に関数があるかどうかはわかりません。価格表があり、列名は「価格」で、その型は VARCHAR() です。多くの理由で、意図的に VARCHAR として必要でした。

問題は、たとえば 100000 の最大価格で製品を検索したい場合ですが、私のコラムにはさまざまな種類の価格があります。以下に例を示します。

  1. 未定 374,500
  2. 交渉
  3. 299,000

最初にフィールド値自体を INTEGER に変換して比較する intVal() のような関数を探しています。以下は、クエリ内の私の現在のステートメントです:-

... AND 価格 <= $maximum_price

次のようなものが解決策になる可能性があります: intVal(price) <= $maximum_price

解決策への助けや指示をいただければ幸いです。乾杯

4

4 に答える 4

5

これを試して...

文字列値は「0」です。他の値はソートされます。

SELECT CAST(price AS UNSIGNED INTEGER) price 
FROM tt order by price desc
于 2012-12-10T10:52:24.517 に答える
0

価格列にはさまざまな形式があるようです。列の値が「TBD 374,500」の場合、比較しようとしていると思います。次に、374500 と 100000 を比較します。

この場合、単純な整数キャストにより、char で始まるすべての価格が 0 に変換されます。すべての形式を処理するには、mysql で独自の関数を作成する必要があります。

于 2012-12-10T12:49:18.653 に答える
0

たぶん次のようなもの:

SELECT ... WHERE CAST(SUBSTRING_INDEX(REPLACE(price, ',', ''), ' ', -1) AS SIGNED) <= $maximum_price

しかし、私は以前のコメントに同意します。テーブルを再考したほうがよいでしょう。

于 2012-12-10T10:41:11.823 に答える
0

PHPにはそのような機能はないと思います。適切な結果を得るには、自分でハードコーディングする必要があります。

于 2012-12-10T10:30:31.173 に答える