大家好我需要在数据库中搜索数据,如123.456.789 即使我只输入了123456789,我该如何搜索? 我需要从数据库中转义特殊字符,这样即使我搜索123456789,它也可以显示123.456.789之类的值。
这是我的问题:
SELECT *
FROM clients
WHERE REPLACE(phone, '.', '') LIKE ".$searchtext."
...其中searchtext
是我正在寻找的号码。无论出现什么特殊字符,它都应返回匹配的所有值。
答案 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'