0

私のクエリは、特定のラベルを含むデータセットを探します。

  SELECT * FROM Authors
  WHERE Title LIKE @pattern

ここで、@patternはユーザーによって定義されます。だから、、などと%abc%一致します。時々のようなラベルがありますabcd0abc

  1. Xabc-ONE
  2. blaYabc-TWO-sometext
  3. Zabc-THREE
  4. blubXabc-4つ

そして、abcとONEまたはTWOを含むラベルを探してい%abc%(ONE|TWO)%ます。出来ますか?

4

3 に答える 3

0

たぶん私はあなたの質問を正しく理解していませんが、なぜ単純ではありませんか

SELECT * FROM Authors
WHERE Title LIKE '%abc%ONE%' OR '%abc%TWO%'

LIKEはワイルドカードを使用した検索であり、それ以上のものではないため、実際には、を使用してやりたいことを実行する他の方法はありませんLIKE。さらに必要な場合は、正規表現を調べてください。しかし、それはより遅くLIKE、あなたの場合は絶対に必要ではないことに注意してください。

アップデート:

コメントから「ユーザーが一致させたいものを気にしたくない」...そして、単に次のようにします。

SELECT * FROM Authors
WHERE Title LIKE CONCAT('%', $userInput, '%ONE%') OR CONCAT('%', $userInput, '%TWO%')

それとも私はまだあなたを正しく理解していませんか?

于 2012-08-07T08:47:18.313 に答える
0

SQL Server を使用している場合は、全文検索エンジンを有効にして、キーボードの contains と near を使用して abc near ONE を検索できます。

クエリで言います(疑似コード)

Select something from table where CONTAINS(column_name, 'abc NEAR ONE')

http://msdn.microsoft.com/en-us/library/ms142568.aspx

于 2014-09-22T14:03:48.567 に答える
0

この回答に示されているように、CLR 関数を介して SQL Server に正規表現のサポートを追加できますが、環境によってはそれができない場合があります。フレンドリーなシステム管理者に確認してください!

于 2012-08-07T09:05:22.443 に答える