0

私はSQLサーバーを使用しており、2つのフィールドを持つテーブルがあります

  1. 名前
  2. 説明

次の文字列を含むすべての行を選択したい

('$','%' , 'ac cd' , 'hjd oih')

こんな感じで使っています

select Name , description from table_name 
where Description like any (' %$%',' %[%]%','%ac cd%' , '%hjd oih%')

これを実行するとエラーが発生するようになりました

Incorrect syntax near the keyword 'any'.

ありがとう 、

4

1 に答える 1

5

検索する必要がある場合はmultiple patterns、を作成するderived tabletemporary table、保存することをお勧めしますpatterns

DECLARE @patterns TABLE  (
pattern VARCHAR(20)
);

INSERT INTO @patterns VALUES ('%$%'), ('%[%]%'), ('%ac cd%');

SELECT a.* FROM table_name a JOIN @patterns p ON (a.Description LIKE p.pattern);

比較する列が複数ある場合は、ON句に式を追加するだけです

SELECT a.* FROM table_name a JOIN @patterns p ON (a.Description LIKE p.pattern)
OR (a.Column2 like p.pattern);

更新: ビューの使用

CREATE VIEW PatternSearch
AS
 WITH Patterns (Patterns)
  AS
  (
     Select  '%Tool%'
     union all
     Select '%Sale%'
     union all
     Select  '%ac cd%'
  )
   SELECT a.* FROM table_name a JOIN Patterns p ON (a.Description LIKE p.pattern)

GO

テストされていませんが、このようにすることができます

ソース

于 2013-03-21T07:23:07.843 に答える