0

使ったことはありませんPATINDEX()が、表のデータを検索するのは難しいPATINDEX()です。多くの場合、任意のテーブルの複数の列を検索する必要があるため、SQLを次のように記述します

SELECT * FROM ADDRESS WHERE
((NAME LIKE 'Bill%') OR (CITY LIKE 'Bill%') OR (COMPANY LIKE 'Bill%'))
AND
((NAME LIKE 'Seattle%') OR (CITY LIKE 'Seattle%') OR (COMPANY LIKE 'Seattle%'))

上記のことを教えてください。私のSQLパフォーマンスは常に良好ですか?テーブルの複数の列を検索するためのより良いSQLを取得するためにGoogleを検索し、以下のSQLを見つけました

select * from YourTable
WHERE PATINDEX('%text1%',COALESCE(field1,'') + '|' + COALESCE(field2,'') + '|'+ COALESCE(field3,'')+ '|' + COALESCE(field4,'')+ '|' + COALESCE(field9,''))>0
AND
 PATINDEX('%text2%',COALESCE(field1,'') + '|' + COALESCE(field2,'') + '|'+ COALESCE(field3,'')+ '|' + COALESCE(field4,'')+ '|' +COALESCE(field9,''))>0

PATINDEX上記のSQL構文は複数の列を検索するのに問題ないことを教えてください。そうでない場合は、PATINDEX関数を使用して複数の値を持つ複数の列を検索する方法を教えてください。ありがとう

QS の更新

あなたはリンクを提供し、複数のキーワードで複数のフィールドを検索する方法を教えてくれました。ここにあります

SELECT FT_TBL.ProductDescriptionID,
   FT_TBL.Description, 
   KEY_TBL.RANK
FROM Production.ProductDescription AS FT_TBL INNER JOIN
   CONTAINSTABLE (Production.ProductDescription,
      Description, 
      '(light NEAR aluminum) OR
      (lightweight NEAR aluminum)'
   ) AS KEY_TBL
   ON FT_TBL.ProductDescriptionID = KEY_TBL.[KEY]
WHERE KEY_TBL.RANK > 2
ORDER BY KEY_TBL.RANK DESC;
GO

しかし問題は、理解するのが少し複雑なことです。全文検索で複数のキーワードを使用して複数のフィールドを検索するためのSQLを教えてください。

複数の値に対して複数のフィールドを検索するために、このようなものを書くことはできますか

SELECT Title
FROM Production.Document
WHERE FREETEXT (Document, '(vital) OR (safety) OR (components)')

SELECT *
FROM YourTable
WHERE CONTAINS((ProductName, ProductNumber, Color), 
'(vital) OR (safety) OR (components)');

what is the difference between FREETEXT and CONTAINS ?? can u please explain.

ありがとう

4

1 に答える 1

2

複数の列を高速検索するには、SQLサーバーで全文検索を設定すると、クエリは次のようになります。

SELECT * FROM ADDRESS 
WHERE Contains((name, city, company), 'Bill') and Contains(*, 'Seattle')

編集

ここで説明する全文検索クエリの構文

編集

あなたは書ける

SELECT *
FROM YourTable
WHERE CONTAINS((ProductName, ProductNumber, Color), 
'"vital" OR "safety" OR "components"');

検索された列のいずれかの単語を含む行が返されます。この答えを確認してください

含むとフリーテキストの違いについては、SQL Server全文検索のヒントパート2:CONTAINSとFREETEXTの記事を確認してください。

于 2013-03-07T09:18:12.810 に答える