Подтвердить что ты не робот

SELECT только строки, содержащие только буквенно-цифровые символы в MySQL

Я пытаюсь выбрать все строки, содержащие только буквенно-цифровые символы в MySQL, используя:

SELECT * FROM table WHERE column REGEXP '[A-Za-z0-9]';

Однако он возвращает все строки, независимо от того, что они содержат не буквенно-цифровые символы.

4b9b3361

Ответ 1

Попробуйте этот код:

SELECT * FROM table WHERE column REGEXP '^[A-Za-z0-9]+$'

Это гарантирует соответствие всех символов.

Ответ 2

Ваш оператор сопоставляет любую строку, содержащую букву или цифру, в любом месте, даже если он содержит другие не буквенно-цифровые символы. Попробуйте следующее:

SELECT * FROM table WHERE column REGEXP '^[A-Za-z0-9]+$';

^ и $ требуют, чтобы вся строка соответствовала, а не только какой-либо ее части, а + - 1 или более буквенно-числовых символов.

Вы также можете использовать именованный класс символов, если хотите:

SELECT * FROM table WHERE column REGEXP '^[[:alnum:]]+$';

Ответ 3

Попробуйте следующее:

REGEXP '^[a-z0-9]+$'

Поскольку regexp не чувствителен к регистру, за исключением двоичных полей.

Ответ 4

Существует также следующее:

select m from table where not regexp_like(m, '^[0-9]\d+$')

который выбирает строки, содержащие символы из нужного столбца (который является m в примере, но вы можете изменить).

Большинство комбинаций не работают должным образом на платформах Oracle, но это происходит. Общий доступ для справок в будущем.

Ответ 5

Попробуйте это

select count(*) from table where cast(col as double) is null;

Ответ 6

Измените REGEXP на Like

SELECT * FROM table_name WHERE column_name like '%[^a-zA-Z0-9]%'

этот файл отлично работает