2017-10-12 182 views
0

如果我有一個包含字母數字值的VARCHAR列。我如何只刪除字母並留下所有其他字符?這不是重複的(至少我不認爲它是),因爲我想把所有特殊字符和數字放在它的位置,但只刪除字母。SQL Server-刪除字符串中的所有字母

Input  Desired Result 
    123   123 
    123S  123 
    A123,123 123,123 
    a123..A123 123..123 

我曾嘗試使用以下,但沒有得到期望的輸出..

DECLARE @textval NVARCHAR(30) 
SET @textval = 'S123..S123' 

SELECT LEFT(SUBSTRING(@textval, PATINDEX('%[0-9.-]%', @textval), 8000), 
      PATINDEX('%[^0-9.-]%', SUBSTRING(@textval, PATINDEX('%[0-9.-]%', @textval), 8000) + 'X') -1) 

SELECT  STUFF(@textval, 1, PATINDEX('%[0-9]%', @textval)-1, '') 
+0

我不認爲這是一個重複我的問題是給所有的特殊字符和數字不變,只刪除字母。 – Harry

回答

1

試圖如果你想從你的String只需在您的字符串通過loop做刪除所有Alphabets

DECLARE @str NVARCHAR(MAX); 
DECLARE @lpcounter INT; 
SET @str = 'A123..Z123'; 
SET @lpcounter = 0; 
WHILE @lpcounter <= 26 
    BEGIN 
     SET @str = REPLACE(@str, CHAR([email protected]), ''); 
     SET @lpcounter = @lpcounter + 1; 
    END; 
SELECT @str; 
+0

Brilliant ..謝謝你..這正是我需要的 – Harry

相關問題