Regexp Mysql проверить, совпадают ли нечетные символы - PullRequest
0 голосов
/ 09 февраля 2020

У меня есть строки длиной 6 символов, и мне нужно проверить, совпадают ли первый символ и третий, 1-й и 5-й или 3-й и 5-й. Строки содержат буквы и цифры

Итак

aabbcc --> false
abbcad --> true
aaabcd --> true
bacada --> false
1a1b33 --> true

Мне нужно, чтобы это было частью запроса mysql. Помощь очень ценится!

Ответы [ 2 ]

1 голос
/ 09 февраля 2020

Самый простой (и, вероятно, самый быстрый) способ - сравнить отдельные подстроки:

SELECT str,
       SUBSTR(str, 1, 1) = SUBSTR(str, 3, 1) OR
       SUBSTR(str, 1, 1) = SUBSTR(str, 5, 1) OR
       SUBSTR(str, 3, 1) = SUBSTR(str, 5, 1) AS matching
FROM data

Выход

str     matching
aabbcc  0
abbcad  1
aaabcd  1
bacada  0
1a1b33  1

Если вы работаете MySQL 8+, вы можете воспользоваться расширенной возможности регулярного выражения использовать обратные ссылки в шаблоне:

SELECT str,
       REGEXP_LIKE(str, '^(.).\\1') OR
       REGEXP_LIKE(str, '^(.)...\\1') OR
       REGEXP_LIKE(str, '^..(.).\\1') AS matching
FROM data

Вывод такой же, как и в предыдущем запросе:

str     matching
aabbcc  0
abbcad  1
aaabcd  1
bacada  0
1a1b33  1

Демонстрация на dbfiddle

0 голосов
/ 09 февраля 2020

Вы можете использовать substring().

...
WHERE substring(nmuloc, 1, 1) = substring(nmuloc, 3, 1)
       OR substring(nmuloc, 1, 1) = substring(nmuloc, 5, 1)
        OR substring(nmuloc, 3, 1) = substring(nmuloc, 5, 1)
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...