SQL Server 2000: обработка специальных символов TSQL - PullRequest
0 голосов
/ 17 мая 2010

ТОЛЬКО с помощью встроенных функций SQL Server 2000, что является лучшим способом обработки специальных символов.Я не уверен, что регулярное выражение можно использовать только с помощью встроенных функций?Я хотел бы найти и заменить специальные символы в моих запросах.

Спасибо

Ответы [ 3 ]

2 голосов
/ 17 мая 2010

Вложенный заменить

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

На самом деле, это не то, что T-SQL хорош в

1 голос
/ 06 декабря 2010

Вот функция, которая удаляет специальные символы, используя диапазон символов ASCII. Внимание: убедитесь, что вы проверили его и довольны использованием процессора, прежде чем внедрять его в среде продуктов с высоким объемом.

Эта функция изменена с 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
1 голос
/ 17 мая 2010

Хотя это может нарушать определение использования «ТОЛЬКО встроенных функций», поскольку оно опирается на WSH, функция, описанная в этой публикации , является одним из способов получения регулярных выражений в SQL 2000 и может быть расширены для поддержки замены и т. д. Хотя это не чистый TSQL, для него не требуется никакого нового программного обеспечения или расширений на сервере (хотя многие администраторы баз данных блокировали бы хранимые процедуры COM-сценариев).

В противном случае, как отметил gbn, единственная доступная нативная операция TSQL - это целая куча REPLACE s.

...