
No.1ベストアンサー
- 回答日時:
MySQLのバージョンを、少なくとも MySQL 4.0、4.1、5.0といったレベルまで書きましょう。
ENUMの仕様をマニュアルで確認しましたか?
値は文字とすべきで、数字や数字としてキャスト可能な値での仕様は、混乱の元なので使用すべきでないと、例まで記述されています。
http://dev.mysql.com/doc/refman/5.1/ja/enum.html
今回のケースでは、
(1)'+2'と一致する値は、ENUMで定義されていない
(2)(1)により、'+2'がインデックス値として使用可能と解釈された
ということです。
対策としては、ENUM値を数値と解釈されないように、英字や日本語などを使えば、別の値と解釈されることはなくなります。
また、ENUMで未定義であった場合に、無効な値として0を格納したり、エラーとしたり(SQLモードで指定)といったことも可能です。この辺は、MySQL 4.1か5.0くらいに標準設定に変更があったように記憶しています。
http://dev.mysql.com/doc/refman/5.1/ja/server-sq …
この回答へのお礼
お礼日時:2010/06/09 17:58
こんにちは
なんか、いきなり説教された感じですが・・・
要は無理ということですね・・・
さて、どうしよう・・・
インデックス値を使用禁止にするモードがあれば、いいのにな
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DBの定義のサイズを大きくし過...
-
SQL、oracleにて文字列操作(連...
-
mySQL プライマリーキーのカラ...
-
他のシートの検索
-
INDIRECT関数の代替方法は?
-
SELECT文で、指定カラム以外の...
-
一部のカラムでdistinctし全て...
-
BULK INSERT時のNull許容について
-
ドロップダウンリストの連動し...
-
テーブルの列数を調べたい
-
betweenを使うyyyy/mm/ddでの範...
-
LIKEの右側にカラムを指定でき...
-
カラムとコラムの使い分け
-
ホームページを作ろうと思いま...
-
MYSQLで全てのカラムから検索す...
-
now()かCURRENT_TIMESTAMPか
-
sql , insert で空行(全ての列...
-
MySQL 一つのテーブルで登録日...
-
Accessで複数(3以上)...
-
WHEREなどの条件が多い場合、ど...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DBの定義のサイズを大きくし過...
-
PHPのforeachでSQL文を処理して...
-
SQL、oracleにて文字列操作(連...
-
ENUM列に列挙されていない値を...
-
インデックスキーを設定するとK...
-
mySQL プライマリーキーのカラ...
-
SQL Serverのntext型で一意イン...
-
SQLの高速化の方法について
-
パフォーマンスとIN句とAND、実...
-
効果的なindexの設定方法
-
(phpMyadminの)インデックスサ...
-
'PRIMARY KEY'と'UNIQUE()'の違...
-
属性?について
-
コンポジット一意インデックス...
-
インデックスの一意な値の数に...
-
インデックスを用いたbetween検...
-
Mysqlのconstraintについて教え...
-
他のシートの検索
-
SELECT文で、指定カラム以外の...
-
INDIRECT関数の代替方法は?
おすすめ情報