Динамический «очищенный» столбец в SQL - PullRequest
0 голосов
/ 10 мая 2018

У меня есть столбец в таблице, который я использую в куче других представлений, но он нуждается в постоянной очистке.Поэтому я использую кучу TRIM () LOWER () и REPLACE (), чтобы убрать все аномалии в этом столбце, например, удалив все '/', 'â € ™,' - ',' ',': ','Ã ‰', '' '', 'É'), '.', '' 'И т. Д., Поэтому, когда я делаю группу вместо 3 или 8 версий значения, оно очищается в одну.

Теперь я чувствую, что мне не хватает хитрости в том, как я подхожу к этому, потому что всякий раз, когда я ссылаюсь на свой столбец, мне приходится тут же чистить мой код, который становится очень грязным.

Теперь БЕЗ создания производногоПОСМОТРЕТЬ с очищенной колонкой, есть ли другой способ справиться с этим?- какая-то функция автоматической очистки или способ создания производного столбца в моей базовой таблице.

Cheers:)

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Вы можете использовать функции:

create function dbo.RemoveSpecialChars (@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

тогда назовите это:

declare @mystring nvarchar(50) = '"!"%$£GETONLYTHISPART_:çé'

select dbo.RemoveSpecialChars (@mystring)

ПРИМЕР здесь

0 голосов
/ 10 мая 2018

или способ получения производного столбца в моей базовой таблице.

Добавьте вычисляемый столбец , который применяет ваши функции очистки к базовой таблице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...