2016-06-30 1 views
2

Мой текущий запрос:Как я могу найти строки, которые имеют только 2 _ в них с Postgres?

SELECT * FROM "Questions" WHERE "questionText" ~ '[ $][_][$ ]' AND "status" != 'inactive'; 

Это возвращает:

  • Джилл была в шоке, обнаружив, что она _ ни один из ответов в тесте.
  • Бруклин стоял с радостью _ ее корона гордо _ топ _ ее голова.
  • Здоровая диета - это идея.
  • I _ смотреть фильм _.

Я только хочу вернуть предметы, как второй и четвертый уход с 2 (или более) _. Я не хочу возвращать несколько ____ рядом друг с другом.

ответ

1

Как насчет чего-то подобного?

WITH questions (questionText, status) AS (
VALUES 
    ('Jill was shocked to find that she _ none of the answers in the test.','active'), 
    ('Brooklyn stood joyously _ her crown proudly _ top _ her head','active'), 
    ('A healthy diet is a _ idea.','active'), 
    ('I _ watch a _ movie.','active') 
) 

SELECT questionText 
FROM questions 
WHERE array_length(regexp_split_to_array(questionText,'[ $][_][$ ]'),1) > 2 
AND status != 'inactive'; 

Выход

enter image description here

+0

@Shamoon 'WHERE questionText ~«(([^ _] + | ^) _ ([^ _] + | $)) {2} '' – Abelisto

+0

Сделайте это ответом, и я его приму – Shamoon

Смежные вопросы