Как найти запись со специальным символом, не соответствующим типу формата, имеющего такой же специальный символ? - PullRequest
0 голосов
/ 01 мая 2019

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

Я попытался найти количество записей, соответствующих формату. Затем я попробовал, в каких почтовых записях есть дефис или «-». Количество отличается.

Я хочу выяснить, какие записи имеют дефис '-' и не соответствуют формату XXXXX-XXXX.

Кроме того, я не думаю, что символ отрицания '^' здесь работает, потому что он не в квадратных скобках '[]'. Пробовал, но не сработало

Запросы, которые я пробовал:

выберите количество (*) из zipcode_table, где zipcode_column, как '% -%'

выберите количество (*) из zipcode_table, где zipcode_column, как '_____-____'

Ответы [ 2 ]

1 голос
/ 01 мая 2019
SELECT
    COUNT(*) AS all,
    COUNT(*) FILTER (WHERE zipcode LIKE '_____-____') AS correct_format,
    COUNT(*) FILTER (WHERE zipcode LIKE '%-%' AND zipcode NOT LIKE '_____-____') AS incorrect_format,
    COUNT(*) FILTER (WHERE zipcode NOT LIKE '%-%') AS no_hyphen
FROM zipcode
1 голос
/ 01 мая 2019

Вы, похоже, хотите:

select count(*)
from zipcode_table
where zipcode_column like '%-%' and          -- has a hyphen
      zipcode_column not like '_____-____';  -- but not in the right place

Возможно, вы действительно захотите проверить цифры в других позициях:

where zipcode_column like '%-%' and             -- has a hyphen
      zipcode_column !~ '^[0-9]{5}-[0-9]{4}$';  -- but not in the right 
...