在MySQL中选择所有首字母以'a%'或'b%'或'c%'或'f%'等开头的所有...

时间:2019-03-09 12:09:09

标签: mysql

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

4 个答案:

答案 0 :(得分:2)

您可以将LEFTIN配合使用以下解决方案:

SELECT * 
FROM books 
WHERE LEFT(author_lname, 1) IN ('a', 'b', 'c', 'f')

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

SELECT * 
FROM books 
WHERE LOWER(LEFT(author_lname, 1)) IN ('a', 'b', 'c', 'f')

您也可以使用FIND_IN_SET

SELECT * 
FROM books
WHERE FIND_IN_SET(LOWER(LEFT(author_lname, 1)), 'a,b,c,f') > 0
  

demo on dbfiddle.uk

答案 1 :(得分:2)

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

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

https://dev.mysql.com/doc/refman/8.0/en/regexp.html

答案 2 :(得分:2)

您可以使用正则表达式来匹配第一个字符。只需将名称开头要匹配的字符添加到[]内的字符集中即可:

SELECT * FROM books WHERE author_lname REGEXP '^[abcf]'

Demo on dbfiddle

答案 3 :(得分:1)

有很多方法可以得到想要的结果,其中之一就是这样:

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