簡體   English   中英

sql server 2000:TSQL特殊字符處理

[英]sql server 2000: TSQL special characters handling

僅使用內置功能的SQL Server 2000,什么是處理特殊字符的最佳方法。 我不確定是否可以僅通過使用內置功能來使用正則表達式? 我想搜索並替換查詢中的特殊字符。

謝謝

嵌套替換

REPLACE(REPLACE(REPLACE(value, '$', ''), '"', ''), ':', '')

真的,這不是t-sql擅長的

盡管這可能違反使用“ONLY內置功能”的定義,因為它依賴於WSH,在所列的功能此帖子是讓正則表達式到SQL 2000的一種方式,並可以擴展到支持更換等,雖然這不是純TSQL,它不應該在服務器上需要任何新軟件或擴展(盡管許多DBA會鎖定COM腳本存儲的proc)。

否則,gbn會提到,唯一可用的本機TSQL操作是一堆REPLACE

這是將使用ASCII字符范圍去除特殊字符的功能。 注意:在大批量產品環境中實施它之前,請確保對其進行測試並且對CPU使用情況感到滿意。

此功能由Christian d'Heureuse從source-code.biz/snippets/mssql/1.htm修改

    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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM