我想从 SQL 中的字符串中修剪所有特殊字符。我见过很多人使用子字符串方法来删除一定数量的字符,但在这种情况下,字符串每一边的长度是未知的。
有人知道怎么做吗?
使用replace
功能会帮助你
我的意思是说,当您要删除特殊字符时,请使用替换功能替换此空格
有关替换的更多信息: http ://technet.microsoft.com/en-us/library/ms186862.aspx
在 MS SQL 中,这将删除所有加号:
SELECT REPLACE(theField, '+', '') FROM theTable
那是你需要的东西吗?
我为 LEFT 修剪任何字符编写了这个函数
CREATE FUNCTION TRIMCHAR
(
-- Add the parameters for the function here
@str varchar(200) , @chartotrim varchar(1)
)
RETURNS varchar(200)
AS
BEGIN
DECLARE @temp varchar(2000)
SET @temp = @str
WHILE CHARINDEX ( @chartotrim , @temp ) =1
BEGIN
SET @temp = RIGHT( @temp , LEN(@temp)-1)
END
RETURN @temp
END
GO
USE [YourDataBase]
GO
/****** Object: UserDefinedFunction [Accounts].[fn_CurrentFeeorArrears] Script Date: 02/18/2014 12:54:15 ******/
/*****Developed By rameez****/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [FN_REMOVE_SPECIAL_CHARACTER]
(
@INPUT_STRING varchar(300))
RETURNS VARCHAR(300)
AS
BEGIN
--declare @testString varchar(100),
DECLARE @NEWSTRING VARCHAR(100)
-- set @teststring = '@ram?eez(ali)'
SET @NEWSTRING = @INPUT_STRING ;
With SPECIAL_CHARACTER as
(
--SELECT '>' as item
--UNION ALL
--SELECT '<' as item
--UNION ALL
--SELECT '(' as item
--UNION ALL
--SELECT ')' as item
--UNION ALL
--SELECT '!' as item
--UNION ALL
--SELECT '?' as item
--UNION ALL
--SELECT '@' as item
--UNION ALL
--SELECT '*' as item
--UNION ALL
--SELECT '%' as item
--UNION ALL
SELECT '$' as item
)
SELECT @NEWSTRING = Replace(@NEWSTRING, ITEM, '') FROM SPECIAL_CHARACTER
return @NEWSTRING
END
select dbo.[FN_REMOVE_SPECIAL_CHARACTER] ('r$@ameez')