SQL Server-删除字符串中的所有字母

时间:2017-10-12 04:17:56

标签: sql sql-server sql-server-2016 alphanumeric

如果我有一个包含字母数字值的VARCHAR列。如何删除字母并留下所有其他字符?这不是重复的(至少我认为不是),因为我想在其中留下所有特殊字符和数字,但只删除字母。

    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, '')

1 个答案:

答案 0 :(得分:1)

如果您要从Alphabets中删除所有String,只需在字符串中执行loop即可。

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