0

ある範囲の文字で始まる名前を選択するために、次のステートメントを作成しています。

select name from db.table where name like '[c-e]%';

このステートメントは私には何も返されません。しかし、次のように変更すると:

select name from db.table where name like 'c%';

レコードを返します。

何が問題ですか ?

4

4 に答える 4

3

LIKE使用する代わりにREGEXP

select name from db.table where name REGEXP '[c-e].+';

MySQL パターン マッチングを参照してください。

于 2012-07-30T11:19:00.093 に答える
2

@juergen dは正しいですが、範囲[cd]から始まるすべての名前を確認するため、少し変更する必要があります。

select name from db.table where name REGEXP '^[c-e].+';

「^」は、開始時の一致が範囲[ce]と一致する必要があることを示します

于 2012-07-30T11:35:20.540 に答える
0

次のように使用する必要がありますREGEXP

SELECT name FROM db.table where name REGEXP '[c-e].+';
于 2012-07-30T11:18:52.773 に答える
0

REGEXP他の人が言ったように、 ;を使用できます。ただし、開始文字の範囲が必要な場合は、次のこともできます。

SELECT name FROM db.table WHERE name >= 'c' AND name < 'f';

nameフィールド内のインデックスを利用してフルスキャンを回避できるため、これはより高速になる可能性があります。

于 2012-07-30T11:30:48.917 に答える