PostgreSQL Regexp - Найти записи с одним символом - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь получить из таблицы все записи, которые имеют в столбце только одну -.

select ta.name, ta.created from tol.order ta 
where ta.name similar to '%-{1}%' and ta.created > '2018-05-01'

, но не имеют успеха.

ДляНапример, я должен получить все записи с именем вроде:

'test-testtest'

, но НЕ как

'test-test-test'

Спасибо за любые советы и помощь.

Ответы [ 3 ]

0 голосов
/ 27 декабря 2018

A non-regex way со встроенной функцией PostgreSQL.См. Функция массива

SELECT ta.name, ta.created from tol.order ta 
WHERE (array_length(string_to_array(ta.name, '-'),1)-1) = 1 
    and ta.created > '2018-05-01'
0 голосов
/ 27 декабря 2018

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

дефис: -, за которым следуют любые символы (включая ни одного): .* с последующимдругим дефисом: -

select ta.name, ta.created
from tol.order ta 
where ta.name !~ '-.*-' and ta.created > '2018-05-01
0 голосов
/ 27 декабря 2018

Вы пробовали что-то вроде:

SELECT ta.name, ta.created from tol.order ta WHERE ta.name ~ $rxb$^[^-]*?-[^-]*$$rxb$ and ta.created > '2018-05-01';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...