从数据库中逃避特殊字符 - MySql

时间:2012-10-17 10:30:05

标签: php mysql database escaping

大家好我需要在数据库中搜索数据,如123.456.789 即使我只输入了123456789,我该如何搜索? 我需要从数据库中转义特殊字符,这样即使我搜索123456789,它也可以显示123.456.789之类的值。

这是我的问题:

SELECT *
FROM clients 
WHERE REPLACE(phone, '.', '') LIKE ".$searchtext."

...其中searchtext是我正在寻找的号码。无论出现什么特殊字符,它都应返回匹配的所有值。

4 个答案:

答案 0 :(得分:2)

select phone from table_name 
 where  replace (cast (phone as text) , '.','')  like '%123456789%'

答案 1 :(得分:2)

@Kiel

以下是样本表&查询。请看看这是否可以帮到你。不确定你的桌子结构。

 CREATE TABLE `clients` (
 `id` int(11) NOT NULL,
 `phone` varchar(255) NOT NULL
 ) ENGINE=InnoDB;

INSERT INTO `test`.`clients` (
`id` ,
`phone`
)
VALUES (
 '1', '123.456.789'
), (
'2', '123.456.785'
);



mysql> select * from clients where replace(phone,'.','') = '123456789'; 
+----+-------------+
| id | phone       |
+----+-------------+
|  1 | 123.456.789 |
+----+-------------+

希望这有帮助!

答案 2 :(得分:1)

可以使用MySQL的REPLACE()功能:

SELECT * FROM my_table WHERE REPLACE(my_column, '.', '') = '123456789';

但是如果my_column只包含整数,那么你应该把它改为MySQL的integer types之一。

答案 3 :(得分:0)

Replace()是执行此操作的最佳功能:

Select * from TableName where Replace(ColumnName,'escaping character','replaced character')='your Search option'

您的案件转义字符为dot(.),替换字符为'',搜索选项为'123456789'