在MySQL中,选择第一个字母以“a%”或“b%”或“c%”或“f%”等开头的所有位置

在MySQL中,选择第一个字母以“a%”或“b%”或“c%”或“f%”等开头的所有位置,mysql,Mysql,我知道OR | |可以多次使用,但是否有较短的代码?当我在, 它没有给出正确的答案。您可以使用中的以下解决方案: 要检查不区分大小写,可以使用以下命令: 您还可以使用: 您可以将正则表达式与RLIKE一起使用 SELECT * FROM books WHERE author_lname RLIKE '^[a-f]'; 可以使用regexp来匹配第一个字符。只需将名称开头要匹配的字符添加到[]中的集合中即可: 有许多方法可以获得您想要的结果,其中之一是: SELECT * FROM tablen

我知道OR | |可以多次使用,但是否有较短的代码?当我在,
它没有给出正确的答案。

您可以使用中的以下解决方案:

要检查不区分大小写,可以使用以下命令:

您还可以使用:


您可以将正则表达式与RLIKE一起使用

SELECT * FROM books WHERE author_lname RLIKE '^[a-f]';

可以使用regexp来匹配第一个字符。只需将名称开头要匹配的字符添加到[]中的集合中即可:


有许多方法可以获得您想要的结果,其中之一是:

SELECT * FROM tablename WHERE 'abcf' LIKE CONCAT('%', LEFT(mycolumn, 1), '%')

你能举例说明你的意思吗?不完全清楚。@Nick我在一列中有几个字符串,我想打印所有以特定字符开头的字符串。从作者名字像“c%”、作者名字像“s%”之类的书中选择*等等。@SebastianBrosch你为什么要删除你的答案,这是一个好答案?@Nick for me好答案是正确的和公认的答案。我取消删除它,并使用其他选项进行扩展。有很多方法可以解决这个问题。我个人会使用左下角,但我想你使用REGEXP的解决方案在性能上也会更好。RLIKE的@volodymyr方法会更快吗?或者你给出的in函数?最好的答案并不总是被接受的。我不确定这些和regexp的答案中哪一个更快,甚至@forpas的答案,但您提供了3个很好的选择。
SELECT * 
FROM books
WHERE FIND_IN_SET(LOWER(LEFT(author_lname, 1)), 'a,b,c,f') > 0
SELECT * FROM books WHERE author_lname RLIKE '^[a-f]';
SELECT * FROM books WHERE author_lname REGEXP '^[abcf]'
SELECT * FROM tablename WHERE 'abcf' LIKE CONCAT('%', LEFT(mycolumn, 1), '%')