Ответ 1
Попробуйте этот код:
SELECT * FROM table WHERE column REGEXP '^[A-Za-z0-9]+$'
Это гарантирует соответствие всех символов.
Я пытаюсь выбрать все строки, содержащие только буквенно-цифровые символы в MySQL, используя:
SELECT * FROM table WHERE column REGEXP '[A-Za-z0-9]';
Однако он возвращает все строки, независимо от того, что они содержат не буквенно-цифровые символы.
Попробуйте этот код:
SELECT * FROM table WHERE column REGEXP '^[A-Za-z0-9]+$'
Это гарантирует соответствие всех символов.
Ваш оператор сопоставляет любую строку, содержащую букву или цифру, в любом месте, даже если он содержит другие не буквенно-цифровые символы. Попробуйте следующее:
SELECT * FROM table WHERE column REGEXP '^[A-Za-z0-9]+$';
^
и $
требуют, чтобы вся строка соответствовала, а не только какой-либо ее части, а +
- 1 или более буквенно-числовых символов.
Вы также можете использовать именованный класс символов, если хотите:
SELECT * FROM table WHERE column REGEXP '^[[:alnum:]]+$';
Попробуйте следующее:
REGEXP '^[a-z0-9]+$'
Поскольку regexp не чувствителен к регистру, за исключением двоичных полей.
Существует также следующее:
select m from table where not regexp_like(m, '^[0-9]\d+$')
который выбирает строки, содержащие символы из нужного столбца (который является m в примере, но вы можете изменить).
Большинство комбинаций не работают должным образом на платформах Oracle, но это происходит. Общий доступ для справок в будущем.
Попробуйте это
select count(*) from table where cast(col as double) is null;
Измените REGEXP
на Like
SELECT * FROM table_name WHERE column_name like '%[^a-zA-Z0-9]%'
этот файл отлично работает