これは私が気付いた奇妙な癖のようなものであり、なぜそれが起こっているのかについて誰かが洞察を提供できるかどうかを本当に知りたかっただけです。
varchar(x)である「アカウント」と呼ばれるフィールドがあるとしましょう
これらの2つのクエリは、同じ結果セットを返します。
SELECT * FROM table WHERE account = 1234;
SELECT * FROM table WHERE account LIKE '1234%';
古いデータを移行するために作成したスクリプトで偶然これに遭遇し、誤って文字列をカプセル化するのを忘れました。
この動作が発生する理由を誰かに教えてもらえますか?
アップデート:
これについて十分に説明していないように思われるので、サンプルテーブルを提供します。
table_name:id-INTアカウント-varChar(50)
エントリ:
ID - account
1 - "1"
2 - "12"
3 - "123"
4 - "1234"
それで:
1:
SELECT * FROM table_name WHERE account LIKE '1%'
エントリ1、2、3、4を返します
2:
SELECT * FROM table_name WHERE account = 1
エントリ1、2、3、4を返します
3:
SELECT * FROM table_name WHERE account = '1'
エントリ1を返します
1が2と同じである理由、および2が3と同じでない理由