mysqlデータベースの結果を所定の文字範囲にフィルタするクエリがあります。文字a-fで始まる項目を表示します。私はこのクエリを使用しますが、私はそれを行うためのより良いクエリがあると思います。mysqlデータベース内の項目を所定の文字範囲にフィルタリングする方法
SELECT DISTINCT title FROM tables WHERE LEFT(title, 1) ='a' AND LEFT(title, 1)='b' ..... AND LEFT(title, 1)='f';
mysqlデータベースの結果を所定の文字範囲にフィルタするクエリがあります。文字a-fで始まる項目を表示します。私はこのクエリを使用しますが、私はそれを行うためのより良いクエリがあると思います。mysqlデータベース内の項目を所定の文字範囲にフィルタリングする方法
SELECT DISTINCT title FROM tables WHERE LEFT(title, 1) ='a' AND LEFT(title, 1)='b' ..... AND LEFT(title, 1)='f';
あなたはそれは大文字と小文字を区別します
SELECT DISTINCT title FROM tables WHERE title REGEXP '^[a-f]'
のような正規表現のものを使用することができます。しかし、大文字と小文字の単語に対して単一の結果を必要としない場合は、DISTINCT
を削除することをお勧めします。あなたは
binary
キーワードを使用して、大文字と小文字の区別を強制することができますしかし例えば、
mysql> select * from name;
+------+--------+
| id | title |
+------+--------+
| 1 | anisgt |
| 1 | bnisgt |
| 1 | dnisgt |
| 1 | gnisgt |
| 1 | hnisgt |
| 1 | Hnisgt |
| 1 | Pnisgt |
+------+--------+
7 rows in set (0.00 sec)
mysql> SELECT DISTINCT title FROM name WHERE title REGEXP '^[f-z]';
+--------+
| title |
+--------+
| gnisgt |
| hnisgt |
| Pnisgt |
+--------+
3 rows in set (0.00 sec)
mysql> SELECT title FROM name WHERE title REGEXP '^[f-z]';
+--------+
| title |
+--------+
| gnisgt |
| hnisgt |
| Hnisgt |
| Pnisgt |
+--------+
4 rows in set (0.00 sec)
編集#1は明確な
なしのための大文字、小文字のクエリ例えばケースを更新します
mysql> SELECT DISTINCT binary title FROM name WHERE title REGEXP '^[f-z]';
+--------------+
| binary title |
+--------------+
| gnisgt |
| hnisgt |
| Hnisgt |
| Pnisgt |
+--------------+
4 rows in set (0.00 sec)
編集:2大文字と小文字を区別した検索が追加されました
MySQL(とおそらくすべてのdatabii)は、 'B'で始まり、 'a'より大きく 'c'より小さい単語を評価します。
したがって、 'a'と 'f'の間の値を確認するだけです。
SELECT DISTINCT title FROM tables WHERE title >= 'a' AND title < 'g';
これは正規表現(私が正規表現を愛しているのと同じように)よりも効率的で、読みやすいです。
最後に 'LEFT(title、1)<= 'f''を使うことをお勧めします。そうでなければ、Zは問題になります。それ以外は、これは素敵で簡単な答えです。 – foochow
ありがとうございました。 mysqlで正規表現を使用すると、文字は大文字と小文字が区別されますか? – christian
@christianいいえ、大文字と小文字は区別されません。私は自分の答えを更新しました。 – Nishant
@christianは、検索で大文字と小文字を区別する方法を追加しました。 – Nishant