Регулярные выражения в SQL - PullRequest
1 голос
/ 14 декабря 2011

Мне любопытно, можно ли использовать регулярные выражения для поиска пробелов в статистике SQL.

У меня есть строка, которая может содержать неограниченное количество пробелов после фактической строки.

Например:


"STRING  "
"STRING "

будет соответствовать, но

<code> 
"STRING A"
"STRINGB"

не будет.

Прямо сейчас у меня есть:

like 'STRING%'

, который не совсем возвращает желаемые результаты.

Я использую Sql Server 2008.

Ответы [ 5 ]

4 голосов
/ 14 декабря 2011

Простой лайк может найти любую строку с пробелами в конце:

where col1 like '% '

Чтобы разрешить также табуляцию, возврат каретки или перевод строки:

where col1 like '%[ ' + char(9) + char(10) + char(13) + ']'

За ваш комментарий, чтобынайти строку, за которой следует любое количество пробелов:

where rtrim(col1) = 'string'
0 голосов
/ 14 декабря 2011

BOL предоставляет обходные пути для LEN () с конечными пробелами: http://msdn.microsoft.com/en-us/library/ms190329.aspx

LEN (столбец + '_') - 1

или с использованием DATALENGTH

0 голосов
/ 14 декабря 2011
where len(col1 + 'x') <> len(rtrim(col1)) + 1
0 голосов
/ 14 декабря 2011

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

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

UPDATE Table1
SET col1 = RTRIM(col1)

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

Или ЗАМЕНИТЕ (col1, ''. ''), чтобы удалить все пробелы, включая пробелы в строке.

Обратите внимание, что RTRIM и LTRIM работают только с пробелами, поэтому для удаления вкладок / CR / LF вам придется использовать REPLACE.Удалить их только из передней / задней части строки возможно, но не совсем просто.Исправьте ошибку поставщика базы данных, чтобы реализовать стандартную функцию TRIM ANSI SQL 99, которая упростила бы это.

0 голосов
/ 14 декабря 2011

Вы можете попробовать

where len(col1) <> len(rtrim(col1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...