2011-01-08 9 views
1

mysqlデータベースの結果を所定の文字範囲にフィルタするクエリがあります。文字a-fで始まる項目を表示します。私はこのクエリを使用しますが、私はそれを行うためのより良いクエリがあると思います。mysqlデータベース内の項目を所定の文字範囲にフィルタリングする方法

SELECT DISTINCT title FROM tables WHERE LEFT(title, 1) ='a' AND LEFT(title, 1)='b' ..... AND LEFT(title, 1)='f'; 

答えて

0

あなたはそれは大文字と小文字を区別します

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大文字と小文字を区別した検索が追加されました

+0

ありがとうございました。 mysqlで正規表現を使用すると、文字は大文字と小文字が区別されますか? – christian

+0

@christianいいえ、大文字と小文字は区別されません。私は自分の答えを更新しました。 – Nishant

+0

@christianは、検索で大文字と小文字を区別する方法を追加しました。 – Nishant

2

MySQL(とおそらくすべてのdatabii)は、 'B'で始まり、 'a'より大きく 'c'より小さい単語を評価します。

したがって、 'a'と 'f'の間の値を確認するだけです。

SELECT DISTINCT title FROM tables WHERE title >= 'a' AND title < 'g'; 

これは正規表現(私が正規表現を愛しているのと同じように)よりも効率的で、読みやすいです。

+0

最後に 'LEFT(title、1)<= 'f''を使うことをお勧めします。そうでなければ、Zは問題になります。それ以外は、これは素敵で簡単な答えです。 – foochow

関連する問題