[前][次][番号順一覧][スレッド一覧]

mysql:7931

From: Shinya Kawaji <Shinya Kawaji <kawaji@xxxxxxxxxx>>
Date: Sat, 21 Jun 2003 14:38:44 +0900
Subject: [mysql 07931] Re: SELECT 文の Where 句について

かわじ、です。


> 早速ですが、商品名とフリガナ(全角カナ)というフィールドを持つテーブル
> があったとします。
> このテーブルよりSelect文を発行して例えば「ア行」で始まる商品一覧を
> 取得したいのですが、この際のSelect文の記述方法が判りません。
> 
> データベースがSQLServerですと、下記の記述で出来ます。
> 
> Select 商品名 From TableName Where フリガナ Like "[ア-オ]%"


REGEXP が使えれば良いんですけどね。

mysql> select "アカ" REGEXP "^[ア-オ]";
+--------------------------+
| "アカ" REGEXP "^[ア-オ]" |
+--------------------------+
|                        1 |
+--------------------------+
1 row in set (0.00 sec)

mysql> select "カオ" REGEXP "^[ア-オ]";
+--------------------------+
| "カオ" REGEXP "^[ア-オ]" |
+--------------------------+
|                        1 |
+--------------------------+
1 row in set (0.00 sec)


私の使っている 3.23.52 では、上記のように効きませんでした(ア行以外の
カタカナもマッチする)。

以下に対応していない旨が書かれていますが、最新のバージョンでもそうですか
ね?(すみません、知らなくて)。
http://www.tmtm.org/ja/mysql/japanese.html


あんまり汎用性はありませんが、本当に「最初の文字」だけで良いのであれば、
以下のような方法もあります。

mysql> select ord("アカ") between ord("ア") and ord("オ");
+---------------------------------------------+
| ord("アカ") between ord("ア") and ord("オ") |
+---------------------------------------------+
|                                           1 |
+---------------------------------------------+
1 row in set (0.00 sec)

mysql> select ord("カオ") between ord("ア") and ord("オ");
+---------------------------------------------+
| ord("カオ") between ord("ア") and ord("オ") |
+---------------------------------------------+
|                                           0 |
+---------------------------------------------+
1 row in set (0.00 sec)



[前][次][番号順一覧][スレッド一覧]

      7930 2003-06-21 13:59 [Masaomi Morofushi <m] SELECT 文の Where 句について            
->    7931 2003-06-21 14:38 ┣[Shinya Kawaji <kawaj]                                       
      7933 2003-06-21 16:23 ┗["Y.Mizushima" <herlo]