选择所有[首字母以数字或特殊字符开头]

时间:2017-08-01 12:59:40

标签: mysql regex sql-like

我想在数据库中搜索标题,以字母,数字或特殊字符开头。

因为信很好我用这个:

SELECT author FROM lyrics WHERE author LIKE 'B%';

但对于数字和特殊字符我需要你的帮助

SELECT author FROM lyrics WHERE author LIKE '[0-9]%'; 

2 个答案:

答案 0 :(得分:3)

LIKE运算符不会像您想要的那样运行,它会采用静态值和通配符(%_)。您应该使用带有mysql REGEXP的正则表达式。类似的东西:

SELECT author FROM lyrics WHERE author regexp '^[0-9B]'

应找到所有以B或数字开头的作者。 ^是一个主要的锚点,意味着字符串必须从那里开始。 []构建一个字符列,它是一个字符列表,或者使用-时的范围,0-9是任意单个数字。

目前还不清楚你的“特殊字符”是什么,但你可能会考虑一个否定的字符类,即不允许的字符列表。 E.g。

SELECT author FROM lyrics WHERE author regexp '^[^.!?]'

会列出所有未以.!?开头的作者。

正则表达式演示:https://regex101.com/r/qjjmNq/1/https://regex101.com/r/qjjmNq/2/

答案 1 :(得分:2)

使用REGEXP而不是LIKE

SELECT author 
FROM lyrics 
WHERE author REGEXP '[^[:alnum:]]'