ある範囲の文字で始まる名前を選択するために、次のステートメントを作成しています。
select name from db.table where name like '[c-e]%';
このステートメントは私には何も返されません。しかし、次のように変更すると:
select name from db.table where name like 'c%';
レコードを返します。
何が問題ですか ?
LIKE
使用する代わりにREGEXP
select name from db.table where name REGEXP '[c-e].+';
MySQL パターン マッチングを参照してください。
@juergen dは正しいですが、範囲[cd]から始まるすべての名前を確認するため、少し変更する必要があります。
select name from db.table where name REGEXP '^[c-e].+';
「^」は、開始時の一致が範囲[ce]と一致する必要があることを示します
次のように使用する必要がありますREGEXP
。
SELECT name FROM db.table where name REGEXP '[c-e].+';
REGEXP
他の人が言ったように、 ;を使用できます。ただし、開始文字の範囲が必要な場合は、次のこともできます。
SELECT name FROM db.table WHERE name >= 'c' AND name < 'f';
name
フィールド内のインデックスを利用してフルスキャンを回避できるため、これはより高速になる可能性があります。