我正在尝试从数据库中替换非英文字母。以下不起作用,它与输入重新调整相同..
DECLARE @string VARCHAR (100)= 'AlfonsínSomoza'
DECLARE @pos INTEGER
WHILE PATINDEX('%[^a-z]%',@string) > 0
BEGIN
SET @pos = PATINDEX('%[^a-z]%',@string)
SET @string = REPLACE(@string,SUBSTRING(@string,@pos,1),'')
END
它返回:
AlfonsínSomoza
但我需要
AlfonsinSomoza
答案 0 :(得分:3)
通过使用另一个排序规则(代码页125x)选择值,可以删除重音。例如
DECLARE @string VARCHAR (100)= 'AlfonsínSomoza'
select @string COLLATE SQL_Latin1_General_Cp1251_CS_AS ;
答案 1 :(得分:1)
SQL_Latin1_General_CP1253_CI_AI
Latin1-General,不区分大小写,不区分重音,不区分kanatype,对Unicode数据不区分宽度,对于非Unicode数据,SQL Server在代码页1253上排序顺序
SELECT 'AlfonsínSomoza' Collate SQL_Latin1_General_CP1253_CI_AI
仅当您没有使用unicode字符串时,才能执行此操作,如果您有unicode字符串,请先将其强制转换为varchar。