Select all where [第一个字母以数字或特殊字符开头]
Select all where [first letter starts with number or special characters]
我想在数据库中搜索以字母、数字或特殊字符开头的标题。
为了字母好我用这个:
SELECT author FROM lyrics WHERE author LIKE 'B%';
但是对于数字和特殊字符我需要你的帮助
SELECT author FROM lyrics WHERE author LIKE '[0-9]%';
使用REGEXP
而不是LIKE
SELECT author
FROM lyrics
WHERE author REGEXP '[^[:alnum:]]'
LIKE
运算符不会像您希望的那样发挥作用,它采用静态值和通配符(%
或 _
)。您应该使用带有 mysql REGEXP
的正则表达式。类似于:
SELECT author FROM lyrics WHERE author regexp '^[0-9B]'
应该找到所有以 B
或数字开头的作者。 ^
是前导锚点,意味着字符串必须从那里开始。 []
构建一个字符 class,它是字符列表,或者使用 -
时的范围,0-9
是任何单个数字。
不清楚您的 "special characters" 是什么,但您可以考虑否定字符 class,即不允许使用的字符列表。例如
SELECT author FROM lyrics WHERE author regexp '^[^.!?]'
将列出所有不以 .
、!
或 ?
.
开头的作者
正则表达式演示:https://regex101.com/r/qjjmNq/1/, https://regex101.com/r/qjjmNq/2/
我想在数据库中搜索以字母、数字或特殊字符开头的标题。
为了字母好我用这个:
SELECT author FROM lyrics WHERE author LIKE 'B%';
但是对于数字和特殊字符我需要你的帮助
SELECT author FROM lyrics WHERE author LIKE '[0-9]%';
使用REGEXP
而不是LIKE
SELECT author
FROM lyrics
WHERE author REGEXP '[^[:alnum:]]'
LIKE
运算符不会像您希望的那样发挥作用,它采用静态值和通配符(%
或 _
)。您应该使用带有 mysql REGEXP
的正则表达式。类似于:
SELECT author FROM lyrics WHERE author regexp '^[0-9B]'
应该找到所有以 B
或数字开头的作者。 ^
是前导锚点,意味着字符串必须从那里开始。 []
构建一个字符 class,它是字符列表,或者使用 -
时的范围,0-9
是任何单个数字。
不清楚您的 "special characters" 是什么,但您可以考虑否定字符 class,即不允许使用的字符列表。例如
SELECT author FROM lyrics WHERE author regexp '^[^.!?]'
将列出所有不以 .
、!
或 ?
.
正则表达式演示:https://regex101.com/r/qjjmNq/1/, https://regex101.com/r/qjjmNq/2/