如何使用LIKE编写查询以也接受特殊字符?

时间:2018-08-07 07:35:33

标签: php mysql sql-like

Am在数据库中的值为“ 123-456-789”。我的查询是

  

SELECT * FROM table_name像“%123456789%”这样的电话

但是它没有给出结果。任何想法

3 个答案:

答案 0 :(得分:1)

当然,您已经排除了破折号,所以它与中间部分不匹配。您查询的逻辑是“字符串之前的内容和字符串之后的内容”,但中间部分应相同。

SELECT * FROM table_name WHERE phone LIKE "%123-456-789%"  

这将起作用。

但是,如果要排除破折号,可以执行以下操作:

SELECT * FROM table_name WHERE REPLACE(phone ,'-','') = "123456789"  

如果您输入的内容中还包含破折号,那么您也可以将其删除:

SELECT * FROM table_name WHERE REPLACE(phone ,'-','') = REPLACE('123456789','-','')

这样,您可以搜索带破折号或不带破折号的数字,但永远不会考虑破折号。

答案 1 :(得分:0)

尝试

SELECT * FROM table_name WHERE `phone` LIKE '%[0-9]' '_' '[0-9]' '_' [0-9]%'

您可能还会考虑一些OR语句

SELECT * FROM table_name WHERE `phone` LIKE '%[0-9]' '_' '[0-9]' '_' [0-9]%' OR '%[0-9]%'

答案 2 :(得分:0)

您可以尝试像这样直接在mySQL中使用regex

select * from `table_name` where `phone` regexp '[0-9]{3}-[0-9]{3}-[0-9]{3}';