2015-08-21 28 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。

相關問題