Удалить специальные символы в SQL - PullRequest
2 голосов
/ 09 августа 2011
      I have to remove the special characters from the selected string.

например: у меня есть строка 'a & b' или 'a & b'.Как я могу удалить специальные символы и объединить эти строки в 'ab'.

Пожалуйста, любой может сказать мне.

SELECT @id= (UPPER(SUBSTRING(@a,1,2)))+(UPPER(SUBSTRING((SELECT table.column2 FROM tablename WHERE tablename.column1 = @b),1,2))) + RIGHT('000000000' + CAST(@count as varchar(10)), 6) 

Ответы [ 3 ]

1 голос
/ 09 августа 2011
Declare @temp varchar(30)
Set @temp = 'A & B'
While PatIndex('%[^a-z]%', @Temp) > 0
Set @Temp = Stuff(@Temp, PatIndex('%[^a-z]%', @Temp), 1, '')

SELECT @id= (UPPER(SUBSTRING(@Temp,1,2)))+(UPPER(SUBSTRING((SELECT table.column2 FROM tablename WHERE tablename.column1 = @b),1,2))) + RIGHT('000000000' + CAST(@count as varchar(10)), 6)
1 голос
/ 09 августа 2011

Функция является безусловно лучшим вариантом, если вы должны сделать это встроенным, вы можете заменить ее в рекурсивном CTE и использовать ее в качестве базовой таблицы;

select 1 as id,
       'qw2££!"£$%^&**(' as F into #TESTTABLE
insert #TESTTABLE 
values (2, 'xxx'),
       (3, ''), 
       (4,'$'),
       (5,'qq""ee$$')

;with cte(id, stripped) as (
    select id, cast(F as varchar(1024)) from #TESTTABLE
    union all 
    select id, cast(stuff(stripped, patindex('%[^a-z]%', stripped), 1, '') as varchar(1024))
    from cte
    where patindex('%[^a-z]%', stripped) > 0
)
select * from cte
    where patindex('%[^a-z]%', stripped) = 0
order by id

Результат:

>>id  stripped
>>1   qw
>>2   xxx
>>3 
>>4 
>>5   qqee
0 голосов
/ 25 октября 2013
DECLARE @str VARCHAR(400)
DECLARE @expres  VARCHAR(50) = '%[~,@,#,$,%,&,*,(,),.,!]%'
  SET @str = 'a&b'
  WHILE PATINDEX( @expres, @str ) > 0
      SET @str = Replace(REPLACE( @str, SUBSTRING( @str, PATINDEX( @expres, @str ), 1 ),''),'-',' ')

  SELECT @str

Подробнее Нажмите здесь

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