0

varchar3行の列があります。

i eat orange,
orange,
oranges are nice

SELECTクエリが次の順序で結果を返すようにします。

orange, oranges are nice, i eat orange

つまり、で始まる一致は、キーワードを含む'keyword'=orangeものの前に来る必要があり、キーワードで終わるものの前に再び来る必要があります。

T-SQLを使用してこれを行うにはどうすればよいですか?キーワードを使ってみLIKEましたが、今のところ成功していません。

4

2 に答える 2

2

次のorderby句を試してください(WHERE句が一致するものだけを返すと仮定します)

ORDER BY charIndex(keyword,col_name),length(col_name)

これにより、キーワードの最も早い出現が最初になります。

于 2011-08-26T21:21:13.890 に答える
2
 WHERE column LIKE '%' + keyword + '%'
 ORDER BY CASE WHEN column = keyword THEN 0
               WHEN column LIKE keyword + '%' THEN 1
               WHEN column LIKE '%' + keyword + '%' THEN 2 END

しかし実際には、この種の検索では全文索引を使用する必要があります。

于 2011-08-26T21:25:45.790 に答える