有没有办法可以消除所有特殊字符'从SQL Server查询?有时候我们的用户会输出奇怪的东西,比如' @'或者'&'在他们的名字领域,我试图消除任何不是数字或字母的东西。这可能吗?
提前致谢。
答案 0 :(得分:1)
我会在这里使用答案:
How to strip all non-alphabetic characters from string in SQL Server?
如果您无法创建函数,则可以在查询中使用函数的代码。
答案 1 :(得分:1)
最好的办法,如果可能的话,就是在你进入SQL Server之前这样做。 SQL Server不是字符串操作的最佳工具。中间层的RegEx可以很好地处理它,或者您可以使用RegEx在SQL中使用CLR。不确定后者的表现,因此需要进行测试。
答案 2 :(得分:0)
没有开箱即用的解决方案,但是以下功能应该这样做:
CREATE FUNCTION dbo.RemoveSpecial (@S VARCHAR(256)) RETURNS VARCHAR(256)
WITH SCHEMABINDING
BEGIN
IF @S IS NULL
RETURN NULL
DECLARE @S2 VARCHAR(256)
SET @S2 = ''
DECLARE @L INT
SET @L = LEN(@S)
DECLARE @P INT
SET @P = 1
WHILE @P <= @L BEGIN
DECLARE @C INT
SET @C = ASCII(SUBSTRING(@S, @P, 1))
IF @C BETWEEN 48 AND 57 OR @C BETWEEN 65 AND 90 OR @C BETWEEN 97 AND 122
SET @S2 = @S2 + CHAR(@C)
SET @P = @P + 1
END
IF LEN(@S2) = 0
RETURN NULL
RETURN @S2
END
更新:
您可以使用一系列REPLACE
语句。
SELECT REPLACE([ColumnName]
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
@String,
'9', ''),
'8', ''),
'7', ''),
'6', ''),
'5', ''),
'4', ''),
'3', ''),
'2', ''),
'1', ''),
'0', '') FROM [TableName]
答案 3 :(得分:0)
DECLARE @str VARCHAR(25)
SET @str = '@#@@#%@mohan2655&$E##'
WHILE PATINDEX( '%[~,@,#,$,%,&,*,(,)]%', @str ) > 0
SET @str = Replace(REPLACE( @str, SUBSTRING( @str, PATINDEX( '%[~,@,#,$,%,&,*,(,)]%', @str ), 1 ),''),'-',' ')
SELECT @str
根据您的要求,可能有效!!!!