私のデータベースのほとんどのデータは、ä
の代わりにä
などのhtmlエンティティで格納されています。ただし、一部のデータはプレーンテキスト(ä
)として保存されます。htmlエンティティを使用してレコードセットを検索する方法
今度はä
またはäのすべてのレコードセットを検索したいと思います。で、検索する値を交換しながら、コンテンツLIKE「%ä
%」ORコンテンツLIKE「%ä
%」
私のデータベースのほとんどのデータは、ä
の代わりにä
などのhtmlエンティティで格納されています。ただし、一部のデータはプレーンテキスト(ä
)として保存されます。htmlエンティティを使用してレコードセットを検索する方法
今度はä
またはäのすべてのレコードセットを検索したいと思います。で、検索する値を交換しながら、コンテンツLIKE「%ä
%」ORコンテンツLIKE「%ä
%」
あなたは、テーブルを検索することができ、どこで最適FROMテーブル
SELECT IDを使用せずにこれを達成するにはどうすればよいです同じクエリ:
SELECT * FROM table WHERE REPLACE(content,'ä','ä') LIKE '%ä%'
もちろん、すべてのUmlauteを置き換える必要があります。
大文字と小文字にも対応しています。 – jswolf19
ベスト・アンサーは、既存のデータを調べ、そのすべてのインスタンスを一貫性のあるものに変更することです。
次に、あなただけではたくさんのすべてのテーブルを通過する必要がUDF
Create Function dbo.ReplaceHtmlEntities(@arg NVARCHAR(MAX) collate Latin1_General_Bin)
returns NVARCHAR(MAX)
as
begin
if @arg is null return @arg
if not @arg like '%&%;%' return @arg
-- Collation matters here obviously!!
-- Auto generated lines
-- These lines should be generated from a list of entities and Unicode values
-- In practice you can limit this to the ones you actually have a problem with
set @arg = replace(@arg, 'Ä' collate Latin1_General_BIN, char(0xUUUU))
set @arg = replace(@arg, 'ä' collate Latin1_General_BIN, char(0xUUUU))
set @arg = replace(@arg, 'Ö' collate Latin1_General_BIN, char(0xUUUU))
set @arg = replace(@arg, 'ö' collate Latin1_General_BIN, char(0xUUUU))
-- For speed you can group them more common first, and short-circuit where possible
if not @arg like '%&%;%' return @arg
-- a lot more lines....
return @arg
end
を作成します!!!!
このような文字を保存するには、最適な方法がおそらく一貫していると思われます。 – jswolf19
はい、そうです。しかし、その列車は駅を出ました...私は将来の仕事でこれを尊重します。 – Martin
あなたは一貫した方法で新しいものを挿入するコードを修正することはできませんし、既にテーブル内のデータを更新する? – jswolf19