2013-09-14 3 views
3

Я не могу понять, как искать все специальные символы в mysql databse в одном запросе.php mysql поиск всех специальных символов

Для примера. искать mysql и возвращать строку, столбец которой содержит любой особый символ типа «,» # ~;% * {и т. д. (означает, что в каком-либо поле есть символы, кроме 0-9, az, AZ).

пример запроса типа я хочу ---

SELECT * FROM mytable where column = 'PATTERN TO DETECT ALL SPECIAL CHARACTERS'; 

пожалуйста также помочь с другим запросом, если я хочу, чтобы исключить некоторые специальные chareacters как &() -.. от досматриваемого

ответ

2

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

SELECT * 
FROM mytable 
WHERE column regexp '[^a-zA-Z0-9]' 

И второй запрос будет похож

SELECT * 
FROM mytable 
WHERE column regexp '[^a-zA-Z0-9\&]' 

\ + символ игнорировать

+1

'^' должен быть _after_ '[', и вам не нужен модификатор '*'. – Barmar

+0

спасибо, вы правы – felipep

+1

Зачем вам нужен модификатор '+'? Одного особого характера достаточно. – Barmar

0

Что-то вроде:

SELECT * FROM mytable where NOT(column REGEXP '^([:alnum:]|[:blank:])*$'); 

'|' является OR, '[: alnum:]' соответствует любому буквенно-цифровому значению, а [:blank:] соответствует пробелу (который вы можете или не хотите), ^ соответствует началу, а $ соответствует концу. Таким образом, он возвращает, где column НЕ составлен из .: буквы или пробела от начала до конца в качестве альтернативы вы могли бы перечислить все неразрешенные символы в одном [] предложения и сопоставить их

вы можете добавить другие символы, если некоторые специальные символы в порядке:.

SELECT * FROM mytable where NOT(column REGEXP '^([:alnum:]|[:blank:]|[()&])*$'); 

См документация для получения дополнительной информации: http://dev.mysql.com/doc/refman/5.1/en/regexp.html

(Я не могу проверить SQL здесь, но я думаю, что у меня правильный синтаксис).

+0

он возвращает все строки ... – agaggi

0

Это самый простой способ:

SELECT * 
FROM mytable 
WHERE column REGEXP '[^a-zA-Z0-9]' 
0

Попробуйте использовать этот запрос для поиска специальных символов записи.

SELECT * 
FROM tableName 
WHERE fieldName REGEXP '[^[email protected]:. \'\-`,\&]' 

Мы удалили символы @: (.) ​​Точка апостроф (') дефис (-) asterick (`) и запятая (,) алфавиты и цифры, так что мы можем видеть остальные специальные символы записи.

Смежные вопросы