Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как вырезать символы из строки?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3464
Есть строка, в которой могут встречаться последовательности символов в разных комбинациях CR, LF, TAB, пробел.
Как вырезать такие символы из строки?

Пример:
" Это мой тчёт блин ''Щ''"

В бинарном виде:
0x200020002000200020002000200020002000200020002000200020000D000A00090009000900200020000D000A00090009000900200020000D000A00200020000D000A002D0442043E0420003C043E04390420004204470451044204200031043B0438043D04200027002700290427002700
23 апр 18, 11:59    [21360152]     Ответить | Цитировать Сообщить модератору
 Re: Как вырезать символы из строки?  [new]
iap
Member

Откуда: Москва
Сообщений: 46954
Ролг Хупин,

порезать строку на результирующие строки подзапроса,
во внешнем запросе собрать в исходном порядке (FOR XML PATH('')), но без ненужных символов.
23 апр 18, 12:08    [21360195]     Ответить | Цитировать Сообщить модератору
 Re: Как вырезать символы из строки?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3464
iap
Ролг Хупин,

порезать строку на результирующие строки подзапроса,
во внешнем запросе собрать в исходном порядке (FOR XML PATH('')), но без ненужных символов.


а как-то "одним махом" реплейснуть?
23 апр 18, 12:21    [21360260]     Ответить | Цитировать Сообщить модератору
 Re: Как вырезать символы из строки?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7403
Можно написать CLR функцию для RegexpReplace. Вполне быстро работает. Или тот же компот использовать в SSIS пакете, если надо выгрузить в файл.
23 апр 18, 12:22    [21360262]     Ответить | Цитировать Сообщить модератору
 Re: Как вырезать символы из строки?  [new]
invm
Member

Откуда: Москва
Сообщений: 9127
Ролг Хупин
Есть строка, в которой могут встречаться последовательности символов в разных комбинациях CR, LF, TAB, пробел.
Как вырезать такие символы из строки?
Четыре вложенных replace
23 апр 18, 12:24    [21360264]     Ответить | Цитировать Сообщить модератору
 Re: Как вырезать символы из строки?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7403
У replace есть ограничение - не вырезает 0x00 (by design это ограничитель сроки), я с таким сталкивался.
23 апр 18, 12:26    [21360275]     Ответить | Цитировать Сообщить модератору
 Re: Как вырезать символы из строки?  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Просто мысли в слух

DECLARE @t VARCHAR(10) = 'abcdef'

SELECT @t = REPLACE(@t, token, '')
FROM (VALUES ('a'), ('c'), ('e')) t(token)

SELECT @t
23 апр 18, 12:28    [21360278]     Ответить | Цитировать Сообщить модератору
 Re: Как вырезать символы из строки?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3464
Владислав Колосов
Можно написать CLR функцию для RegexpReplace. Вполне быстро работает. Или тот же компот использовать в SSIS пакете, если надо выгрузить в файл.


CLR не проходит, Майкрософты запретили его в Азуре с какого-то времени, вообще.
23 апр 18, 12:32    [21360291]     Ответить | Цитировать Сообщить модератору
 Re: Как вырезать символы из строки?  [new]
iap
Member

Откуда: Москва
Сообщений: 46954
Нужно сделать замену одного слова на другое
23 апр 18, 14:19    [21360917]     Ответить | Цитировать Сообщить модератору
 Re: Как вырезать символы из строки?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3464
Ролг Хупин
Есть строка, в которой могут встречаться последовательности символов в разных комбинациях CR, LF, TAB, пробел.
Как вырезать такие символы из строки?

Пример:
" Это мой тчёт блин ''Щ''"

В бинарном виде:
0x200020002000200020002000200020002000200020002000200020000D000A00090009000900200020000D000A00090009000900200020000D000A00200020000D000A002D0442043E0420003C043E04390420004204470451044204200031043B0438043D04200027002700290427002700


Так можно убрать непечатные:

select @txt=replace(replace(replace(replace(@txt,char(20),''),char(09),''),char(13),''),char(10),'');


но как быть с этими парами
2000 ?
23 апр 18, 16:21    [21361731]     Ответить | Цитировать Сообщить модератору
 Re: Как вырезать символы из строки?  [new]
aleks222
Member

Откуда:
Сообщений: 855
Ролг Хупин
но как быть с этими парами
2000 ?


Выучить, наконец, шо такэ UNICODE - не пробовал?

select cast( N' ' as binary(2))
23 апр 18, 16:28    [21361767]     Ответить | Цитировать Сообщить модератору
 Re: Как вырезать символы из строки?  [new]
Eleanor
Member

Откуда:
Сообщений: 2639
Ролг Хупин,

Вы хотели заменить все перечисленные символы на пробел, а потом заменить множественные пробелы одним?
23 апр 18, 16:56    [21361933]     Ответить | Цитировать Сообщить модератору
 Re: Как вырезать символы из строки?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3464
aleks222
Ролг Хупин
но как быть с этими парами
2000 ?


Выучить, наконец, шо такэ UNICODE - не пробовал?

select cast( N' ' as binary(2))


шо такэ не пробовал
23 апр 18, 17:32    [21362066]     Ответить | Цитировать Сообщить модератору
 Re: Как вырезать символы из строки?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3464
Eleanor
Ролг Хупин,

Вы хотели заменить все перечисленные символы на пробел, а потом заменить множественные пробелы одним?


и так, и там и по задаче могут быть серии пробелов, которые не нужны, достаточно одного
23 апр 18, 17:33    [21362070]     Ответить | Цитировать Сообщить модератору
 Re: Как вырезать символы из строки?  [new]
Eleanor
Member

Откуда:
Сообщений: 2639
Ролг Хупин,

Т.е. подойдет типовое решение?
SELECT REPLACE(REPLACE(REPLACE(LTRIM(RTRIM(
REPLACE(REPLACE(REPLACE(REPLACE(@txt,char(20),' '),char(09),' '),char(13),' '),char(10),' ')
))
,'  ',' ' + char(7))
,char(7) + ' ','')
,char(7),'')
23 апр 18, 17:48    [21362124]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить