使ったことはありません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.
ありがとう