替换字符串中的阿塞拜疆字符不正确



当我想用"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

最新更新