1

演算子を持つクエリがありますが、BETWEEN間違った結果が表示されます

私の質問-

SELECT * FROM register WHERE height BETWEEN  '1' AND  '6'

また、身長が 10、12、16 のユーザーも表示されますが、これは間違っています。このクエリの問題は何ですか?
正常に動作する別のクエリがありますが、クエリが長くなるため、適切な使用方法ではありません

SELECT * FROM register WHERE height > 1 AND height < 12  

より多くの条件が追加された場合、クエリの理解とコーディングが困難になるため、クエリを取得する正しい方法を教えてください。

4

4 に答える 4

3

高さが整数であると仮定すると、そうでないはずです

SELECT * FROM register WHERE height BETWEEN 1 AND 6

一重引用符は必要ありません

于 2012-08-24T12:23:26.927 に答える
1

場合:
1. 列タイプを変更できない、または変更したくない場合
2. フィールド内の文字が数字のみの場合

クエリを次のように変更できます。

SELECT * 
FROM register 
WHERE CONVERT(height, UNSIGNED INTEGER) BETWEEN 1 AND 6

この SQL fiddleで私の例を参照してください。

于 2012-08-24T12:42:00.957 に答える
0

列「高さ」のデータ型を確認してください。int、float、または double である必要があります。上記の場合は、次のクエリを実行します。

SELECT * FROM register WHERE height BETWEEN 1 AND 6
于 2012-08-24T12:26:58.957 に答える
0

高さフィールドが数値でない場合は、比較する前に変換できます。

SELECT * FROM register WHERE CONVERT(height, unsigned) BETWEEN 1 AND 6
于 2012-08-24T12:39:44.137 に答える