regex 如何使用正则表达式从列名字符串中删除所有特殊字符

ndasle7k  于 2023-06-07  发布在  其他
关注(0)|答案(5)|浏览(158)

我想在SQL Server 2018中从表的列名中删除所有特殊字符,如$,%,#等。如何在正则表达式的帮助下实现?
如果我的列中的值是“S$d#@gh”,则输出应为--“Sdgh”
谢谢你。

xlpyo6sf

xlpyo6sf1#

试试这个:

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

您可以创建SCALAR FUNCTION并传递此列

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

O/P

SELECT dbo.Remove_SpecialCharacters(COLUMNNAME),* FROM TABLENAME
syqv5f0l

syqv5f0l2#

SQL Server现在支持translate()。这允许您执行以下操作:

select replace(translate(column, ',~@#$%&*().!', replace(' ', 12)), ' ', '')

唯一的技巧是空格的替换字符串需要与您要查找的字符的长度完全相同。

2q5ifsrm

2q5ifsrm3#

首先将所有不需要的字符替换为单个不需要的字符,然后将其替换为空白:

select replace(translate('foo$#@bar', '$#@', '$$$'), '$', '')

输出:

foobar

请参阅现场演示。

gcuhipw9

gcuhipw94#

检查这个链接,这一个为我工作的一个类似的问题,我需要删除字母字符和特殊字符,所以我只剩下数字。https://www.c-sharpcorner.com/blogs/how-to-remove-characters-special-symbol-from-string-using-sql-function

Create function [dbo].[RemoveCharSpecialSymbolValue](@str varchar(500))  
returns varchar(500)  
begin  
declare @startingIndex int  
set @startingIndex=0  
while 1=1  
begin  
set @startingIndex= patindex('%[^0-9.]%',@str)  
if @startingIndex <> 0  
begin  
set @str = replace(@str,substring(@str,@startingIndex,1),'')  
end  
else break;  
end  
return @str  
end

然后使用@Thiyagu选择函数(列)解决方案

elcex8rz

elcex8rz5#

我使用了另一个功能。正常数字和大小写字母的否定。

CREATE FUNCTION dbo.RemoveSpecialCharacters( @str VARCHAR(MAX))
RETURNS VARCHAR(MAX) AS
BEGIN
DECLARE @expres  VARCHAR(max) = '%[^a-zA-Z0-9 ]%'

WHILE PATINDEX( @expres, @str ) > 0
SET @str = Replace(REPLACE( @str, SUBSTRING( @str, PATINDEX( @expres, @str ), 1 ),''),'-',' ')
RETURN @str
END

相关问题