Соответствие шаблону SQL Server. Регулярное выражение? - PullRequest
1 голос
/ 08 июля 2011

Я пытаюсь найти почтовый ящик в поле адреса.

Это лучшее решение?

SELECT * 
FROM [Address] WITH (NOLOCK)
WHERE 
Addressline1   LIKE ('%p.o%box%')   OR 
Addressline1   LIKE ('%p.o.box%')   OR 
Addressline1   LIKE ('%po%box%')    OR 
Addressline1   LIKE ('%p o%box%')

Стоит ли использовать регулярные выражения?

Спасибо, Джотиш

1 Ответ

4 голосов
/ 09 июля 2011

Ключевое слово LIKE имеет лишь небольшую часть возможностей, подобных RegEx;см. http://msdn.microsoft.com/en-us/library/ms179859.aspx (просто нажмите «Другие версии», чтобы получить соответствующую страницу для SQL Server 2005).

Вы можете использовать подчеркивание «_» в качестве «подстановочного знака из одного символа», например «LIKE».«% P_O_Box%» означает «букву« P », за которой следует любой 1 символ, за которым следует« O », за которым следует любой 1 символ, а затем« Box »».

Вы можете использовать квадратные скобки '[]'искать диапазон или набор символов, например'% P [.] O [.] Box% ', что означает «P», за которым следует пробел или точка (и ничего больше), за которыми следует «O», затем пробел или точка, а затем «Box».

Сторона-note: вам не нужны круглые скобки вокруг строк сравнения.

Но в конечном итоге, как предполагает billinkc, вам следует стандартизировать данные в этом поле, если это вообще возможно.

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