4

私はそのような解決策を探していましたが、これまでのところ肯定的な結果はありません...私のテーブルはエントリデータで構成されています

  1. 1234
  2. 3241
  3. 8424
  4. 8_24
  5. 9_13
  6. 8_2_
  7. 8_25

ここで、'_' は 0 ~ 9 のワイルドカードです。SELECT * from table WHERE data LIKE '8424' のように、これらのデータを取得する方法を見つけたいと思います。クエリは 8424 と 8_24 の両方を返す必要があります。

前もって感謝します!

PS。ポイントは、 「8_24」のようなデータは、 「8024」または「8124」または「8224」などと理解でき、6 行目も同様です。したがって、クエリが SELECT * from table WHERE data LIKE '8424' の場合、4 行目と 6 行目を返す必要があります。SELECT * from table WHERE data LIKE '8_2_' を使用すると、7 行目が含まれますが、これは私が望むものではありません。

最後に 、解決策を見つけました。それは非常に簡単です。使用するだけです: SELECT * FROM table WHERE '8424' LIKE data 回答ありがとうございます!

4

3 に答える 3

0
select * from table where data like '8[4_]24'

LIKEのドキュメントの「パターン」セクションを参照してください。を使用[]して、文字の範囲またはセットを指定できます。

于 2012-05-23T03:29:36.690 に答える
0

データ =substr('8424',0,instr(data,' '))|| のテーブルから * を選択します。substr('8424',instr(データ,' '),長さ(データ));

これにより、単一のワイルドカードエントリが保証されます

それ以外の場合は試してください

Select * from table where replace(data,'_','%') like '8424';

于 2012-05-23T03:33:48.603 に答える
0
SELECT * FROM table WHERE data LIKE '8%24'

それは「834434224」のようなものも引き込みます...

SELECT * FROM table WHERE data LIKE '8_24'

これは、1 文字のワイルドカード (_) を使用して機能します。

LIKE コマンド

于 2012-05-23T03:23:45.760 に答える