只使用SQL Server 2000內置的功能,什麼是處理特殊字符的最佳方式。我不確定純正使用內置功能是否可以使用正則表達式?我想搜索並替換我的查詢中的特殊字符。sql server 2000:TSQL特殊字符處理
感謝
只使用SQL Server 2000內置的功能,什麼是處理特殊字符的最佳方式。我不確定純正使用內置功能是否可以使用正則表達式?我想搜索並替換我的查詢中的特殊字符。sql server 2000:TSQL特殊字符處理
感謝
這是使用ASCII字符範圍去除特殊字符的函數。 小心:在高容量產品環境中實施之前,請確保對其進行測試並對CPU使用率感到滿意。
此功能由基督教德Heureuse
CREATE FUNCTION dbo.RemoveSpecialChars (@s VARCHAR(256))
RETURNS VARCHAR(256)
WITH SCHEMABINDING
BEGIN
IF @s is null
RETURN null
DECLARE @s2 varchar(256)
DECLARE @l int
DECLARE @p int
SET @s2 = ''
SET @l = len(@s)
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
BEGIN
SET @s2 = @s2 + char(@c)
END
SET @p = @p + 1
END
IF LEN(@s2) = 0
BEGIN
RETURN null
END
RETURN @s2
END
雖然這 「唯一內置功能」 違反使用的定義,因爲它依賴於WSH,所以this posting中列出的功能是獲得正則表達式到SQL 2000的一種方法,並且可以擴展以支持替換等。雖然這不是純粹的TSQL,但它不應該要求任何新的軟件或擴展在t上他服務器(儘管許多DBA會鎖定COM腳本存儲過程)。
否則,gbn提到,唯一可用的本地TSQL操作是一大堆REPLACE
s。
加里從source-code.biz/snippets/mssql/1.htm修改,請尊重我的署名權,並指出這是在我的函數的修改版本http://www.source-code.biz/ snippets/mssql/1.htm – 2012-10-07 18:13:52
基督徒,我很高興地承認你是源頭。 – 2012-10-07 20:58:20