【发布时间】:2013-11-23 03:26:04
【问题描述】:
请告诉我如何将sql server 中的半个空格替换为空格
例如:بیامو to بی ام و
select *
from test
where title like N'%بیامو%'
【问题讨论】:
请告诉我如何将sql server 中的半个空格替换为空格
例如:بیامو to بی ام و
select *
from test
where title like N'%بیامو%'
【问题讨论】:
我不明白你所说的半空格是什么意思。但是你可以使用 Replace 函数来替换字符。
【讨论】:
获取半空格或隐藏字符或零宽度空格的unicode非常重要, 有时是“8204”,有时是“8203” 在下面的示例中,我们通过子字符串获取 unicode 编号然后替换它,另一件重要的事情是整理对我来说它只适用于“SQL_Latin1_General_CP1_CI_AS”
DECLARE @UnicodeReplace NVARCHAR(5) = N'یآ'
-- check that unicode string length is 3,
-- and prove existence of zero-width space character matching unicode 8204
SELECT @UnicodeReplace AS String,
LEN(@UnicodeReplace) AS Length,
UNICODE(SUBSTRING(@UnicodeReplace, 2, 1)) AS UnicodeValue -- it gets you 8204
set @UnicodeReplace = N'یآ' collate Persian_100_CI_AS --+ NCHAR(8204)
-- replace and prove the unicode string length is reduced to 2
SELECT REPLACE(@UnicodeReplace collate SQL_Latin1_General_CP1_CI_AS , NCHAR(8204), ''),
LEN(REPLACE(@UnicodeReplace collate SQL_Latin1_General_CP1_CI_AS , NCHAR(8204), '')) AS Length
【讨论】: