用于字母搜索的 MySQL 查询

标签 mysql sql regex

如何检索以A OR B OR C 开头的星号记录,

我刚试过这个查询

SELECT * FROM `test_tbl` WHERE Left(cus_name, 1) = 'a'

 ---> display all customer name starting with character a

我又加了一个条件,就是

SELECT * FROM `test_tbl` WHERE Left(cus_name, 1) = 'a' or Left(cus_name, 1) = 'b'

 --->It  displayed all customer name starting with character a and in some records middle i saw some name starting with b also, 

我想要的是,我想要提取记录,名称以 ABC 开头,

而且它应该按字母顺序排序,

我也尝试了下面的查询。

SELECT * FROM `test_tbl` WHERE Left(cus_name, 1) REGEXP '^[^a-z]+$';

上面的渲染记录是,只有两条以A开头的记录,

上面的问题是做字母分页,

谢谢

最佳答案

你可以试试:

SELECT * FROM `test_tbl` WHERE cus_name REGEXP '^[abc]';

它将列出 cus_nameabc 开头的所有行。

使用的正则表达式是^[abc]:

  • ^ : 是开始 anchor
  • [..] :是字符类。所以 [abc] 匹配 abc。等同于(a|b|c)

您使用的正则表达式:^[^a-z]+$

  • 第一个^是起始 anchor 。
  • [..] 是字符类。
  • 字符类里面的^ 否定它。所以 [^abc] 是任意的 三者以外的性格 列出。
  • + 是一个或的量词 更多。
  • $ 是结束 anchor 。

你实际上是在说:给我所有 cus_name 包含一个或多个不能是任何小写字母的字母的行。

关于用于字母搜索的 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3975472/

相关文章:

mysql - 从 access 将数据导入到 R 中

php - Eloquent multiple where from date 字段 <= >=

mysql - sql基于ANDing多个详细记录选择主记录

mysql - 我已经对组合列建立了索引,是否也应该对单独的列建立索引?

c# - ASP.NET : SqlDataSource insert - identity parameter

python - 解析嵌套的条件语句

regex - 使用 SED 替换缩进的文本

mysql - 根据距离返回匹配的sql行

mysql - SQL - 显示分组值从一组到另一组的变化(取决于时间)

Java 正则表达式 : make it find longest match?