当我想用"sh"替换字符串中的阿塞拜疆字符"ş
我该怎么解决。有什么想法吗?
REPLACE(mystring,'ş','sh')
字符"ş"属于Turkish_CI_AS。将它们插入数据库和检索它们也是一个问题。诀窍是在插入和查询时使用nvarchar和N。
请参阅下面的示例。
SELECT REPLACE(N'arshad khan earns 1000ş',N'ş','sh');
SELECT 'ş'
SELECT N'ş'
输出如下
阿尔沙德·汗获得1000先令
s
ş
此字符表示为Unicode
http://en.wikipedia.org/wiki/%C5%9E
使用这篇文章,解决你的问题
如何从查询窗口向SQL Server插入unicode文本
问候R
研究后的唯一解决方案。
它有两个字符"ş"one_answers"ç"。如果你想用其他字符替换这些字符,它也会替换"s"one_answers"c"。
当然,如果你的数据库排序规则是"Turkish_CI_AS",它会起作用。但在我的情况下,只有两个字符,我无法更改数据库排序规则。里面没有逻辑。
所以我的客户只是想让我把阿塞拜疆字符改成拉丁字母"ş"->的。
我的解决方案是,当我开始时,我用特殊字符替换"s",并在我将所有azeri字符替换为latin后将其放回。因此,我原来的"c"one_answers"s"字符在替换后不受影响。
这是我写的函数
Create FUNCTION [dbo].[funRGMReplaceAzeriCharacters]
(
@string nvarchar (MAX)
)
RETURNS varchar(MAX)
AS
BEGIN
DECLARE
@Result nvarchar(MAX)
Begin
SET @Result=REPLACE(@string,'s' ,'V1986Q')
SET @Result=REPLACE(@Result,'c' ,'V1987Q')
SET @Result=REPLACE(@Result,'ı' ,'i')
SET @Result=REPLACE(@Result,'ə','a')
SET @Result=REPLACE(@Result,'ğ','g')
SET @Result=REPLACE(@Result,'ü','u')
SET @Result=REPLACE(@Result,'ş','sh')
SET @Result=REPLACE(@Result,'ç','ch')
Set @Result=REPLACE(@Result,'ö','o')
-- bring back s and c
Set @Result=REPLACE(@Result,'V1986Q','s')
Set @Result=REPLACE(@Result,'V1987Q','c')
END
RETURN UPPER (@Result)
END