You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

PostgreSQL/SQL:如何判断字符串大小写并筛选含小写字符的记录

如何在PostgreSQL/SQL中筛选包含小写字符的字符串记录

嘿,这个需求其实很好解决——要找出Content字段里混有小写字母的记录对吧?我给你分享两种实用的方法,都能完美匹配你的测试场景:

方法一:用正则表达式精准匹配(PostgreSQL专属)

PostgreSQL原生支持~操作符做正则匹配,直接瞄准小写字母范围就行,写法简单直观:

SELECT id, Content
FROM content
WHERE Content ~ '[a-z]';

这个语句的逻辑很明确:只要Content字段里存在至少一个a-z范围内的小写英文字母,就会被筛选出来。对应你的测试数据,id2(Test)、3(TEst)、4(TESt)都会被选中;而id1(全大写)、id5(大写加数字)不符合条件,会被自动排除。

方法二:通过大小写转换对比(通用兼容)

如果你想写适配更多数据库的通用SQL,可以利用大小写转换函数做对比:

SELECT id, Content
FROM content
WHERE Content != UPPER(Content);

思路很巧妙:把原字符串转成全大写后,如果和原字符串不相等,说明原字符串里肯定存在小写字母(毕竟UPPER()只会把小写转成大写,数字、符号这类非字母字符不会被改变)。比如Test转成TEST后和原字符串不等,会被选中;而TEST01转大写后还是自身,和原字符串相等,就不会被筛选出来。

小提醒

如果你的数据库使用了不区分大小写的排序规则(collation),直接用!=做字符串对比可能会失效,这时候优先用正则表达式的方法更可靠——正则匹配是基于字符的ASCII值判断的,不受排序规则影响。

内容的提问来源于stack exchange,提问作者harsh kumar

火山引擎 最新活动