考虑一下这样的表datatbl
:
+----------+
| strfield |
+----------+
| abcde |
| fgHIJ |
| KLmno |
+----------+
我想写一个像这样的查询:
select * from datatbl where strfield rlike '[a-z]*';
与非SQL正则表达式一样,我想返回w / abcde
的行,但不返回带大写字母的行。我似乎找不到一个简单的方法来做到这一点。我错过了一些愚蠢的东西吗?
谢谢, 乔
答案 0 :(得分:20)
MySQL REGEXP / RLIKE很糟糕 - 您需要将数据转换为BINARY以进行区分大小写的搜索:
SELECT *
FROM datatbl
WHERE CAST(strfield AS BINARY) rlike '[a-z]*';
答案 1 :(得分:-1)
您也可以使用LOWER()
函数来解决它。
SELECT *
FROM datatbl
WHERE LOWER(strfield) RLIKE '[a-z]*';
如果您运行的是 MySQL 8 + ,则还可以在REGEXP_LIKE()
函数中使用不区分大小写的开关。
SELECT *
FROM datatbl
WHERE REGEXP_LIKE(strfield, '[a-z]*', 'i');