如何从SQL Server中的字符串中剥离所有非字母字符(连字符除外)?

时间:2018-10-10 22:18:33

标签: sql sql-server regex

Select dbo.[RemoveNonAlphaNumExceptSub]('aAbc123-4def5678ghi90 jkl#^.\')
  • 转义'%[^ a-z0-9-]%'返回aAbc123-4def5678ghi90jkl \
  • 在“%[-^ a-z0-9]%”之前返回#。\ 在开头,结尾加上连字符,但仍然被剥夺

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

Create Function [dbo].[RemoveNonAlphaNumExceptSub]( @Temp VarChar( max ) )
Returns VarChar( 1000 )
AS
Begin

    Declare @KeepValues as varchar( 50 )
    Set @KeepValues = '%[^a-z0-9]%'
    While PatIndex( @KeepValues, @Temp ) > 0
    Set @Temp = Stuff( @Temp, PatIndex( @KeepValues, @Temp ), 1, '' )

Return @Temp
End

2 个答案:

答案 0 :(得分:0)

尝试通过在正则表达式模式前加上反斜杠来使其转义,例如:'%[^a-z0-9\-]%'

或者,您可以将连字符作为'%[-^a-z0-9]%'之类的模式中的第一个字符

随时使用refer to this post for more helprefer to this post too

答案 1 :(得分:0)

这最终可以正常运行'%[^ a-z0-9-]%'