mysql:7870
From: Satoshi Higuchi <Satoshi Higuchi <satoshi@xxxxxxxxxx>>
Date: Tue, 03 Jun 2003 19:26:06 +0900
Subject: [mysql 07870] 文字列を’で囲まない場合の解釈について
樋口と申します。 EXPLAINを使ってインデックスが使われるかどうか調べていた時に気が、 付いたのですがVARCHARに対して文字列を'で囲まないでも結果が返って きます。具体的には郵便番号検索のために次のテーブル定義をしています。 mysql> desc zip; +--------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+----------------+ | serial | int(11) | | PRI | NULL | auto_increment | | code | varchar(5) | | | | | | oldzip | varchar(5) | | MUL | | | | newzip | varchar(7) | | MUL | | | | kana | varchar(98) | | MUL | | | | kana00 | varchar(12) | | | | | | kana01 | varchar(38) | | | | | | kana02 | varchar(52) | | | | | | kana03 | text | YES | | NULL | | | addr | varchar(54) | | MUL | | | | addr00 | varchar(8) | | | | | | addr01 | varchar(20) | | | | | | addr02 | varchar(34) | | | | | | addr03 | text | YES | | NULL | | | c10 | char(1) | YES | | NULL | | | c11 | char(1) | YES | | NULL | | | c12 | char(1) | YES | | NULL | | | c13 | char(1) | YES | | NULL | | | c14 | char(1) | YES | | NULL | | | c15 | char(1) | YES | | NULL | | +--------+-------------+------+-----+---------+----------------+ これに対して、次の2種類のSELECT文を発行しました。 1. 文字列を'で囲まない場合。 mysql> select kana from zip where newzip=0600000; +------------------------------------+ | kana | +------------------------------------+ | ホッカイドウサッポロシチュウオウク | +------------------------------------+ 1 row in set (0.68 sec) 2. 文字列を'で囲んだ場合。 mysql> select kana from zip where newzip='0600000'; +------------------------------------+ | kana | +------------------------------------+ | ホッカイドウサッポロシチュウオウク | +------------------------------------+ 1 row in set (0.00 sec) どちらも結果を得ることができるのですが、'で囲った場合は検索時間が短くEXPLAIN を用いてみるとINDEXが使用されていることが判ります。 他のデータベース(DB2)では、文字列は必ず'で囲まないとエラーになった記憶があ ります。MySQLでも文字列は'で囲まないとエラーになるような厳密解釈させるため の、オプションは存在しますか? もしありましたらお教えください。 誤ったSQL文の記述でパフォーマンスが低下することが無いように、厳密に解釈させ たいと考えています。 動作環境は、 OS: AIX5L MySQL: 3.23.53 です。 よろしくお願いします。 -- Satoshi Higuchi
-> 7870 2003-06-03 19:26 [Satoshi Higuchi <sat] 文字列を’で囲まない場合の解釈について 7871 2003-06-04 08:30 ┗[Shingo Yamagai <yama] 7878 2003-06-06 10:35 ┗[Satoshi Higuchi <sat]