我想在数据库中搜索标题,以字母,数字或特殊字符开头。
因为信很好我用这个:
SELECT author FROM lyrics WHERE author LIKE 'B%';
但对于数字和特殊字符我需要你的帮助
SELECT author FROM lyrics WHERE author LIKE '[0-9]%';
答案 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:]]'