1
以下のクエリの条件が真の結果を返すが、私は偽の結果が欲しい。私に提案してください。mysqlの先行ゼロでvarcharをチェックする方法
select *
from test
where
'00160001' between '0013001' and '0023000' OR
'00200000' between '0013001' and '0023000'
以下のクエリの条件が真の結果を返すが、私は偽の結果が欲しい。私に提案してください。mysqlの先行ゼロでvarcharをチェックする方法
select *
from test
where
'00160001' between '0013001' and '0023000' OR
'00200000' between '0013001' and '0023000'
先行ゼロなしで同じ結果が得られます。
整数データ型を使用して整数値を比較します。キャストと
あなたの例:
はまた、キャストを使用してその場で値を変換することができ、実際の数字を使用したり変換してからあなたを防ぐことは何
select if(cast('00160001' as unsigned) between cast('0013001' as unsigned)
and cast('0023000' as unsigned),1,0) as test_a,
if(cast('00200000' as unsigned) between cast('0013001' as unsigned)
and cast('0023000' as unsigned),1,0) as test_b;
値は数値になりますか? – Vatev
私はあなたが実際にそれらの値に対してテーブルの列をテストしたいと思いますか?現時点では、テーブル内のすべての行が返されるか、まったくテーブルの既存の列をテストしないため、指定した定数にのみ依存します。テーブルのデータをチェックする場合は、列の定義を表示して、文字列か数値かを確認してください。 –
すべてのリテラルを文字列として定義すると、すべての比較が文字列になります。 8文字の文字列は、いくつか余分な手がかりがない限り、7文字列の間にあることはできません。 –