How to strip all non-alphabetic characters from string in SQL Server?

后端 未结 18 1569
情深已故
情深已故 2020-11-21 23:49

How could you remove all characters that are not alphabetic from a string?

What about non-alphanumeric?

Does this have to be a custom function or are there

18条回答
  •  野的像风
    2020-11-22 00:29

    Using a CTE generated numbers table to examine each character, then FOR XML to concat to a string of kept values you can...

    CREATE FUNCTION [dbo].[PatRemove](
        @pattern varchar(50),
        @expression varchar(8000) 
        )
    RETURNS varchar(8000)
    AS
    BEGIN
        WITH 
            d(d) AS (SELECT d FROM (VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) digits(d)),
            nums(n) AS (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) FROM d d1, d d2, d d3, d d4),
            chars(c) AS (SELECT SUBSTRING(@expression, n, 1) FROM nums WHERE n <= LEN(@expression))
        SELECT 
            @expression = (SELECT c AS [text()] FROM chars WHERE c NOT LIKE @pattern FOR XML PATH(''));
    
        RETURN @expression;
    END
    

提交回复
热议问题