2013-06-05 71 views
2

我有一张表。SQL like语句“%[^ 0-9]%”不起作用

USER TABLE Columns: 
    user_name (varchar) 
    age  (int) 
    address (varchar) 
    telephone (varchar) 

我想要寻找地址字段包含数字的用户。

我尝试下面的SQL语句在MySQL工作台:

SELECT * FROM user WHERE address LIKE '%[^0-9]%'; 

然而,它没有工作。有人可以帮我从这里出去吗?

在此先感谢。

回答

2

我相信你正在寻找REGEXP

SELECT * 
FROM  user 
WHERE address REGEXP '.*[^0-9].*' 

查找地址的Example没有数字

+0

谢谢。得到它=)但这很奇怪......当我在http://www.w3schools.com/sql/trysql.asp?filename=trysql_select_like中尝试了我的sql语句时,它工作正常。 –

+0

@ user1140210:'%'不是一个正则表达式字符,它是一个通配符。在搜索文件时几乎和'*'一样,SQL的等价物将是''%'。尽管'LIKE'可以接受某些类似于正则表达式的东西,它并不是真正的正则表达式(这就是'REGEXP'出现的地方)。 –

0
'%[^0-9]%' 

将搜索具有%[^0-9]%为文本列

它赢得了” t做一个正则表达式吧

尝试

'.[^0-9].' // That performs regex 
1

您应该从支架取出^字符:

LIKE '%[0-9]%'

它并不想成为一个正则表达式,它是[charlist]通配符

+0

你可以使用括号中的^。请参阅https://www.w3schools.com/sql/sql_wildcards.asp – Magne

0
select * from user where first_name REGEXP '^[0-9].*' 

这会为您提供用户表中名字以数字0-9开头的所有记录。