sql начинаются с и заканчиваются - PullRequest
0 голосов
/ 23 сентября 2018

Я пытаюсь найти строку, начинающуюся с D или K и заканчивающуюся 2 или 3 в Oracle SQL с помощью функции regexp_like().

REGEXP_LIKE (Атрибут, '(^ D | ^ K)') показывает

DL71
DR93
DW11
KL62
KT03
KV29

REGEXP_LIKE (Атрибут, '(^ D | ^ K) *') показывает

AT94
BV06
CD52
DL71
DR93
DW11
FD21
KL62
KT03
KV29

REGEXP_LIKE (Атрибут, '* (^ 2 | ^ 3)') показывает

CD52
DR93
KL62
KT03

REGEXP_LIKE (Атрибут, '(^ D | ^ K) * (^ 2 | ^ 3)') показывает

CD52 
DR93
KL62        
KT03  

Как мне исправить это?

Данные следующие:

Attribute
AT94
BV06
CD52
DL71
DR93
DW11
FD21
KL62
KT03
KV29

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Вам не нужно регулярное выражение;Вы можете просто использовать LIKE:

WHERE ( Attribute LIKE 'D%' OR Attribute LIKE 'K%' )
AND   ( Attribute LIKE '%2' OR Attribute LIKE '%3' )
0 голосов
/ 23 сентября 2018

Я думаю, что вы ищете:

WHERE REGEXP_LIKE(Attribute, '^[DK].*[23]$')

Вы ищете классы персонажей.Они ограничены квадратными скобками.

Регулярное выражение:

  • ^ в начале шаблона означает, что выражение начинается с шаблона.
  • [DK] - это класс символов, совпадающий ровно с одним вхождением одного из этих символов.
  • .* соответствует любому количеству символов (могут быть новые строки).
  • [23] являетсякласс символов, совпадающий ровно с одним из этих символов.
  • $ в конце шаблона означает, что выражение заканчивается этим шаблоном - в данном случае 2 или 3 в конце.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...