2009-08-17 24 views
5

SQL Serverデータベースの列に対して%LIKE%検索を実行できますが、その列の特殊文字を無視することができるかどうかは誰にも分かりますか?ブルックリンSQLデータベースの検索列で特殊文字を無視する

まで

だから、例えば私が「歌」という列を持っており、彼らは次が含まれている場合...


黒または白

ませスリープしない」船ソング

パパは説教しないでください


「no sleey to brooklyn」を検索した場合、アポストロフィを含めるのを忘れていても一致を返すことができます。彼らが「ソウル」を探していれば、4行目を返すことも好きです。私はあなたがそのアイデアを得ると確信しています....

助けが本当にありがとう。

答えて

8

フルテキストインデックスを使用して検索し、FREETEXTとCONTAINSを使用して検索することができます。

EDIT:私はまだ全文索引の検索を見直してみますが、別の回答からフォローするのは、REPLACEを使用したオプションです。

SELECT 
    Artist, 
    Title 
FROM 
    Songs 
WHERE 
    REPLACE(REPLACE(REPLACE(Artist, '#',''), '*', ''), '"', '') LIKE '%Keywords%' 
+0

ダング、私にそれを打つ。これは実際に行く方法のように聞こえる、IMO。実際に私は今、同様の状況に直面しています。私はちょうどフルテキスト検索に切り替えようとしています。 –

+0

残念なことに、私自身のクエリを書く可能性を調査している理由は、フルテキストインデックスを現在使用しており、クライアントがそれを好きではないということです。 – jonhobbs

+0

@ジョン、これを調べましたか? http://msdn.microsoft.com/en-us/library/cc879245.aspx –

0

TRANSLATE, UPPER, and TRIMの組み合わせを使用してください。

+0

SQL Serverで翻訳しますか? –

+0

私はこれらの機能を検索しましたが、情報は見つかりませんでした。 – jonhobbs

+0

相当するSQL Serverは、UPPER、LTRIM、RTRIMです。 TRANSLATE関数はありませんが、特殊文字ごとに複数のREPLACE関数を使用できます。 –

1

削除する文字はさまざまです。

where句で正規表現を使用して、クリーンな値をマッチさせることができます。 Read more about regex within SQL here

ソウルの4番目の行を返すアートの場合、ソングにタグを付けるデータ構造が必要で、タグを検索して一致する必要があります。私はそれのためのあなたのデータ構造についての詳細が必要になると思います。

+0

Regex'sを使うのはひどいですが、特殊文字を削除する行に正規表現を見つけることができるかもしれません。ありがとう – jonhobbs