2

重複の可能性: MySQL の instr() でワイルドカードを適用する方法は?

リンクされた可能性のある重複は、私の現在の一種とまったく同じクエリを示しています。ただし、大文字と小文字を区別して一致させる方法が見つかりません。:\

SELECT COUNT(*) FROM users WHERE INSTR(flags, 'T') > 0;

私は明らかに間違っている46のカウントを取得します。大文字か小文字かに関係なく、フラグ内のすべてのインスタンス「T」をカウントしています。

MySQLのドキュメントに従って動作します。大文字と小文字を区別して一致させるために、変数に「@」記号を付けるように言っているMySQLドキュメントで何かを見つけました。ただし、@'T' でこれを試して、次のクエリを作成しました。

SELECT COUNT(*) FROM users WHERE INSTR(flags, @'T') > 0;

私はゼロのカウントを取得します。

誰かが私のためにこれに光を当てることができますか? :)

編集:

言い忘れました、すみません。また、 where 節として a を試しましたが、それでも失敗し、 ;LIKE '%T%'と同じものを返します。(INSTR(flags, 'T') > 0)

4

2 に答える 2

6

私はこれがうまくいくと信じています

SELECT COUNT(*) FROM users WHERE INSTR(binary flags, 'T') > 0;
于 2010-01-10T05:22:26.760 に答える
2

テスト済み、

SELECT binary 'AKkRBbagSsPpCtmxeGhUX' LIKE '%T%';

予想どおり、「0」を生成します。文字列比較のドキュメントによると、オペランドのいずれかがバイナリの場合、LIKE はバイナリ (したがって、大文字と小文字を区別する) 比較を実行します。

于 2010-01-10T05:59:11.647 に答える