0

私はこのクエリを持っています:

SELECT *
FROM
  (SELECT ' ' + REPLACE(Title,' ','  ') + ' ' AS Title
   FROM MyTable) t
WHERE Title LIKE '% Samsung %'
  AND Title LIKE '% Galaxy %'
  AND Title LIKE '% Axiom %'
  AND REPLACE(REPLACE(REPLACE(Title,' Samsung ',''),' Galaxy ',''), ' Axiom ','') = ''

このクエリは、MyTable フィールド Title を検索し、LIKE で指定された単語を含むすべての行を表示する必要があります。

エラーは発生しませんが、フィールド タイトルには次の文字列 'Samsung Galaxy Axiom R830' を含む行が含まれており、クエリはそれを返しません (返すべきです)。

これは私の最初の質問でした。一部のレコードでは機能しましたが、特定の単語のみを含むすべての SQL SELECT LIKE では機能しませんでした

4

3 に答える 3

3

" Samsung" の前後にスペースがあり、文字列の " " の前にスペースがないためSamsungでしょうか?

于 2013-01-17T15:20:54.637 に答える
2

などのスペースがあります。おそらく、次のようなものが必要です。

WHERE (Title LIKE '% Samsung %' or title like '%Samsung' or title like 'Samsung%')
  AND (Title LIKE '% Galaxy %' or title like '%Galazy' or title like 'Galaxy%')
  AND (Title LIKE '% Axiom %' or title like '%Axiom' or title like 'Axiom%')
  AND replace(REPLACE(REPLACE(REPLACE(Title,'Samsung',''),'Galaxy',''), 'Axiom',''), ' ') = ''

実際、考えてみると、最後の置換で十分だと思います。

where replace(REPLACE(REPLACE(REPLACE(Title,'Samsung',''),'Galaxy',''), 'Axiom',''), ' ') = ''
于 2013-01-17T15:23:00.267 に答える
2

タイトルが「Samsung Galaxy Axiom R830」の場合、次の条件は成り立ちません。

REPLACE(REPLACE(REPLACE(Title,' Samsung ',''),' Galaxy ',''),' Axiom ','') = ''

書かれたとおりに置換すると出力されます

SamsungAxiom R830

これは、空白の文字列には一致しません。

置換からスペースを削除すると、R830 (およびおそらくいくつかの空白) が残ります。Hellion がコメントで述べているように、これは「Samsung」、「Galaxy」、「Axiom」という言葉だけをタイトルに含める必要があるクエリです。

于 2013-01-17T15:21:25.087 に答える