2017-10-12 142 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

相关问题