You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle不区分大小写查询:如何提取去重并统一显示值?

统一大小写并检索去重值的实现方案

嘿,这个需求在数据库处理里挺常见的,核心思路就是先把所有不规则大小写的字段值统一成你想要的格式(比如首字母大写、其余小写的English),再进行去重操作。下面我给你分主流数据库逐一说明具体实现方式:

MySQL/MariaDB

MySQL没有直接的首字母大写函数,不过我们可以通过字符串拼接函数手动实现格式统一,再配合DISTINCT去重:

SELECT DISTINCT 
    CONCAT(UPPER(SUBSTRING(language_column, 1, 1)), 
           LOWER(SUBSTRING(language_column, 2))) AS standardized_language
FROM your_table_name;
  • 解释:SUBSTRING截取首字母转大写,剩下的部分转小写,再拼接成标准格式,最后用DISTINCT过滤重复值。

PostgreSQL

PostgreSQL自带INITCAP()函数,完美适配你的需求——它会自动把每个单词的首字母大写,其余字母小写,直接配合DISTINCT即可:

SELECT DISTINCT INITCAP(language_column) AS standardized_language
FROM your_table_name;
  • 举个例子:不管输入是english、ENGLISH还是eNgLiSh,都会输出English。

SQL Server

SQL Server可以用STUFF()函数结合大小写转换来实现格式统一:

SELECT DISTINCT 
    STUFF(LOWER(language_column), 1, 1, UPPER(LEFT(language_column, 1))) AS standardized_language
FROM your_table_name;
  • 解释:先把整个字段转小写,再用STUFF把首字母替换成大写版本,最后去重。

Oracle

Oracle同样提供了INITCAP()函数,用法和PostgreSQL一致:

SELECT DISTINCT INITCAP(language_column) AS standardized_language
FROM your_table_name;

额外注意事项

  • 如果你的字段里包含多单词内容(比如american english),INITCAP()会把每个单词的首字母都大写,输出American English,如果这不符合你的预期,可以根据实际需求调整字符串处理逻辑。
  • 要是你只需要去重、不纠结显示格式,也可以直接用DISTINCT LOWER(language_column)或DISTINCT UPPER(language_column),不过输出就是全小写或全大写的格式了。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:00:45