SQL Шаблон как сервер - PullRequest
       20

SQL Шаблон как сервер

0 голосов
/ 30 марта 2020

Я хочу сопоставить пользовательский шаблон в одном из столбцов в SQL базе данных сервера. Проблема в том, что я не знаю точную длину паттерна.

Я хочу только те строки, которые имеют 'function' и 'alphanumeri c pattern', которые имеют минимум 5 и максимум 8 символов. Начальный и конечный символы не являются фиксированными, без учета регистра.

Значение столбца выглядит следующим образом:

Row    Value
--------------------------------------------------------------------
 1     I have a single own function and its namely 123BA689,BAS54256
 2     Everyone has base function AFD12,CHD12234
 3     Nicole has its own ASS1256902,25ADFG2

Желаемый вывод:

Row    Value
--------------------------------------------------------------------
 1     I have a single own function and its namely 123BA689,BAS54256a
 2     Everyone has base function AFD12,CHD1223465AS

Я пробовал Like и регулярное выражение для сопоставления с шаблоном, но не удалось.

Кто-нибудь знает, как это исправить?

select * 
from ab 
where lower(ab.a) like '%function' and '%[a-z0-9]{6}%'

Спасибо.

1 Ответ

0 голосов
/ 30 марта 2020

SQL Сервер не поддерживает регулярные выражения. Вы можете концептуально делать то, что вы хотите:

where lower(ab.a) like '%function%' and
      lower(ab.a) like '%[a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9]%' and
      lower(ab.a) not like '%[a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9]%' 

Однако, это вернет любую строку, которая имеет "функцию", потому что это шаблон alphanumeri c с 5-8 символы.

...