swe*_*ety 4 regex sql t-sql sql-server
我想从 SQL Server 2018 中表的列名中删除所有特殊字符,如 $、%、# 等。如何借助正则表达式来做到这一点?
如果我的列中的值为“S$d#@gh”,则输出应为 --“Sdgh”
谢谢。
尝试这个:
DECLARE @str VARCHAR(400)='S$d#@gh'
DECLARE @expres VARCHAR(50) = '%[~,@,#,$,%,&,*,(,),.,!]%'
WHILE PATINDEX( @expres, @str ) > 0
SET @str = Replace(REPLACE( @str, SUBSTRING( @str, PATINDEX( @expres, @str ), 1 ),''),'-',' ')
SELECT @str
Run Code Online (Sandbox Code Playgroud)
您可以创建标量函数并传递此列
CREATE FUNCTION dbo.Remove_SpecialCharacters( @str VARCHAR(MAX))
RETURNS VARCHAR(MAX) AS
BEGIN
DECLARE @expres VARCHAR(50) = '%[~,@,#,$,%,&,*,(,),.,!]%'
WHILE PATINDEX( @expres, @str ) > 0
SET @str = Replace(REPLACE( @str, SUBSTRING( @str, PATINDEX( @expres, @str ), 1 ),''),'-',' ')
RETURN @str
END
Run Code Online (Sandbox Code Playgroud)
输出/输出
SELECT dbo.Remove_SpecialCharacters(COLUMNNAME),* FROM TABLENAME
Run Code Online (Sandbox Code Playgroud)