sql >> データベース >  >> RDS >> Sqlserver

SQLのフィールドで複数の文字列または文字を検索する方法

    multiple patternsがある場合 derived tableを作成する方が良い または temporary 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
    

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

    ソース




    1. sqlalchemyでginインデックスを使用してランク付けされた検索結果を返す

    2. phpを使用してmysqlテーブルにタイムスタンプを保存する

    3. SQLでゼロ以外の値を含む行をカウントする方法

    4. mysqlクエリの2つのwhere条件