当我想用'sh'替换我的字符串中的阿塞拜疆字符'ş'时,它会起作用,但它也会用'sh'替换's'
我如何解决它。任何想法?
REPLACE(mystring,'ş','sh')
答案 0 :(得分:0)
此字符表示为Unicode
http://en.wikipedia.org/wiki/%C5%9E
使用本文解决您的问题
how to insert unicode text to SQL Server from query window
此致 [R
答案 1 :(得分:0)
字符“ş”属于Turkish_CI_AS。将它们插入数据库并检索它们是一个问题。诀窍是使用nvarchar并在插入和查询时使用N.
请参阅下面的示例。
SELECT REPLACE(N'arshad khan earns 1000ş',N'ş','sh');
SELECT 'ş'
SELECT N'ş'
输出如下
arshad khan获得1000sh取值
取值
答案 2 :(得分:0)
研究后只有解决方案。
它出现在两个字符'ş'和'ç'中,如果你想用其他东西替换这些字符,它也会取代's'和'c'。
当然,如果您的数据库排序规则是'Turkish_CI_AS',它将会起作用。但在我的情况下只有两个字符我无法更改我的数据库排序规则。其中没有逻辑。
所以我的客户只是想让我把阿塞拜疆的角色改成拉丁'ş' - >'s'。
我的解决方案当我开始用特殊字符替换's'并在将所有的azeri字符替换为latin后将其放回原位。所以我的原始'c'和'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