Как сопоставить любую букву в SQL? - PullRequest
0 голосов
/ 21 декабря 2018

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

SELECT * FROM sales WHERE `customerfirstname` like '[a-z]%';

Ничего не возвращает.Поэтому я бы подумал, что критерием является то, что первым символом является буква, а затем любые последующие символы не имеют значения.Следующий код работает, но ограничивает строки, где первый символ представляет собой.

SELECT * FROM sales WHERE `customerfirstname` like 'a%';

Я не понимаю сопоставление с образцом?Разве это не [az] или [AZ] или [0-9] для какой-либо буквы или цифры?Также, если бы я хотел запустить этот тест для второго символа в строке, я бы не использовал

SELECT * FROM `sales` WHERE `customerfirstname` like '_[a-z]%' 

Это для SQL и MySQL.Я делаю это в phpmyadmin.

Ответы [ 2 ]

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

Этого можно достичь с помощью регулярного выражения.

SELECT * FROM sales WHERE REGEXP_LIKE(customerfirstname, '^[[:alpha:]]');

^ обозначает начало строки, в то время как класс символов [:alpha] соответствует любому буквенному символу.

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

  • alnum: буквенно-цифровые символы
  • digit: цифры
  • lower: строчные буквенные символы
  • upper: прописные буквенные символы

См. mysql regexp docs , чтобы узнать больше ...

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

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

SELECT s.* 
FROM sales s
WHERE s.customerfirstname REGEXP '^[a-zA-Z]';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...