Am在数据库中的值为“ 123-456-789”。我的查询是
SELECT * FROM table_name像“%123456789%”这样的电话
但是它没有给出结果。任何想法
答案 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}';