1

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

这是我的查询:

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

...searchtext我要找的号码在哪里。无论出现什么特殊字符,它都应该返回所有匹配的值。

4

4 回答 4

2
select phone from table_name 
 where  replace (cast (phone as text) , '.','')  like '%123456789%'
于 2012-10-17T10:49:23.683 回答
2

@基尔

这是示例表和查询。请看看这是否可以帮助你。不确定您的表结构。

 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 |
+----+-------------+

希望这有帮助!

于 2012-10-17T11:28:12.603 回答
1

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

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

但是如果my_column只包含整数,你真的应该把它改成 MySQL 的整数类型之一。

于 2012-10-17T10:40:39.777 回答
0

Replace()是做到这一点的最佳功能:

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

对于您的情况,转义字符是dot(.),替换字符是'',搜索选项是'123456789'

于 2012-10-17T11:20:29.897 回答