2015-08-21 29 views
1

我试图从数据库中取代非英文字母。以下是不行的,它的重新调整一样输入..如何从SQL Server中的varchar去除所有非英文字符?

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 
+1

我们可以看到你不会从你的字符串中删除字符,而是用'i'替代'í' – wiretext

+0

定义“英文字符”。是'æ'吗? –

回答

3

通过与其它归类选择值(代码页面125x)重音可以被删除。例如

DECLARE @string VARCHAR (100)= 'AlfonsínSomoza' 

select @string COLLATE SQL_Latin1_General_Cp1251_CS_AS ; 
1

SQL_Latin1_General_CP1253_CI_AI Latin1的干事,不区分大小写,不区分重音,kanatype不敏感,宽度不敏感的Unicode数据,SQL Server的排序代码页1253上订购124非Unicode数据

SELECT 'AlfonsínSomoza' Collate SQL_Latin1_General_CP1253_CI_AI 

只有在不使用unicode字符串时才能使用,所以如果您有unicode字符串,则首先将其转换为varchar。

相关问题