私は、データを検索してすべての引用符を無視できるようにする必要のあるサイトを持っています。SQL Server - 検索時に引用符を無視する簡単な方法はありますか?
- の検索ではありませんを行い、ないかはいけないし、で始まる単語持つ行の結果を取得:んではないを、またははいけないしていません
- を検索する「ハロー」か「ハロー」またはこんにちはとその行の結果を取得「こんにちは」、「ハロー」またはこんにちは
注:で始まる単語を持っている私はすでに、検索語に渡さ
は、私が欲しいのために引用符を除去しています
select Name
from tbl_MyTable
where (Replace(Replace(Replace(Replace(Replace(Replace(Name,'“',''),'‘',''),'''',''),'"',''),'’',''),'”','') like 'dont%'
or Replace(Replace(Replace(Replace(Replace(Replace(Name,'“',''),'‘',''),'''',''),'"',''),'’',''),'”','') like '% dont%');
現在、私のベストプラクティスは新しい列を作成することです
select Name
from tbl_MyTable
where FixedName like '% dont%';
しかし、私は本当にこれが新しい列を作成することなく達成することができるかどうかを知りたいと、それは効率的でなければなりません:私はちょうど行うことができるように、それは(スペースで先頭に付加)引用取り除いたバージョンが含まれています。効率性、先頭とあなたのlike
文で%
末尾限り
select Name
from tbl_MyTable
where dbo.udf_StripQuotes(name) like '% dont%';
:その後のように見えます
CREATE FUNCTION [dbo].[udf_StripQuotes]
(
@String VARCHAR(MAX)
)
RETURNS VARCHAR(MAX)
AS
BEGIN
RETURN Replace(
Replace(
Replace(
Replace(
Replace(
Replace(@String,'“',''),
'‘',''),
'''',''),
'"',''),
'’',''),
'”','')
END
GO
:私はこのロジックを統合するユーザー定義関数を作成することをお勧め
私はC#アプリケーションからクエリを実行しています。そのため、パフォーマンスを犠牲にするのではなく、その側で行うことができる小さな作業があります。私のコードは実際には複数のテーブルとカラムをクエリしています(ここでは単純化しています)、データスコープの回答が望ましいと思います。 –