在MYSQL中使用REGEXP查找以特殊字符开头的记录

时间:2013-05-16 14:41:56

标签: mysql regex

好的,所以我想要获取以数字开头的结果,我有这个正则表达式来查找数字条目

SELECT * FROM dbname WHERE subject REGEXP '^[0-9]'

但是,如果我想要它找到数字和所有特殊字符条目,我该怎么做?

因此,例如,如果主题是“:subject”或“.subject”或“* subject”等,它会发现它们以及“1subject”或“2subject”等等...... 基本上任何东西都是从一个不同于aplhabetical字符的东西开始的。

感谢。

2 个答案:

答案 0 :(得分:4)

使用“^[^a-zA-Z]”作为正则表达式

这意味着什么

首先^是“锚定到行首”

[是角色类的开头

字符类中的

^表示否定此类 - 所以匹配其中的字符的反面

a-z是小写英文字母

A-Z是大写的英文字母

]是字符类的结尾

由于班级是自己的,它代表一个角色

所以正则表达式意味着“匹配非a-z或A-Z的行开头的任何字符” 在SQL表达式的上下文中,这应该匹配任何不以a-z或A-Z

开头的结果

答案 1 :(得分:0)

您不需要使用正则表达式。您想要找到以A-Z或a-z开头的主题。

WHERE (subject >= 'A' and subject < '[') OR (subject >= 'a' and subject < '{');

[Z之后的下一个字符,而{z之后的下一个字符。

这将让优化器使用您拥有的subject上的任何索引。