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

PostgreSQL/MySQL能否创建名称仅大小写不同的多列?

PostgreSQL与MySQL中列名大小写区分规则

MySQL

  • 列名的大小写敏感性由lower_case_table_names系统变量和操作系统文件系统特性共同决定:
    • 若lower_case_table_names=0(Linux/Unix默认配置):列名严格区分大小写,能同时创建COL和col这类仅大小写不同的列。
    • 若lower_case_table_names=1(Windows默认,也可手动设置到其他系统):MySQL会自动把所有列名转成小写存储,此时无法创建仅大小写不同的列,执行建表语句会提示“Duplicate column name 'col'”错误。
    • 示例代码:
      -- lower_case_table_names=0时可成功执行
      CREATE TABLE test_case (
          COL INT,
          col INT
      );
      
      -- lower_case_table_names=1时执行报错
      CREATE TABLE test_case (
          COL INT,
          col INT
      );
      

PostgreSQL

  • PostgreSQL默认区分列名大小写,但有个关键规则:未用双引号包裹的列名会被自动转为小写存储,所以直接写COL和col会被识别为同一个列,导致建表失败。
  • 要创建仅大小写不同的列,必须用双引号包裹每个列名,查询时也得用双引号精准匹配:
    • 示例代码:
      -- 错误写法:无双引号,PostgreSQL将COL和col统一转为col,报错重复
      CREATE TABLE test_case (
          COL INT,
          col INT
      );
      
      -- 正确写法:用双引号包裹,成功创建区分大小写的列
      CREATE TABLE test_case (
          "COL" INT,
          "col" INT
      );
      
      -- 查询时必须带双引号,否则会查询小写的col列
      SELECT "COL", "col" FROM test_case;
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 00:45:36