由于刚刚从MySQL转到PostgreSQL不久,发现我在查询时,PostgreSQL对库名表名字段名以及字段值是区分大小写的!这给项目的开发带来了很大的打击.由于MySQL在建立表结构时可以设定是否区分大小写,于是我想修改PGSQL的表结构或者配置文件能够达到大小写不敏感的作用.可是我没有找到相关的资料.目前仅仅是通过 ILIKE 来解决,请问高手PGSQL能不能通过表结构或者postgresql.conf来解决大小写敏感的问题,谢谢了!

解决方案 »

  1.   

    http://bbs.chinaunix.net/thread-1339087-1-1.html
      

  2.   

    用upper或者lower
    select * from "table" where "column" =upper(str);
    postgresql的字段大小写不敏感,但是如果字段加了双引号后就大小写敏感了,比如字段AA 和 aa 和 Aa都会被当作是aa.如果都加上引号,则大小写敏感"AA" 和 "aa" 和 "Aa"将是都是不一样的。
      

  3.   

    我的处理是,通过写一个脚本将当前PG中所有的大写转为小写,这个对数据库内部处理是没有改变的。
    程序上就不用再进行修改了。这个问题当前在MySQL/Sybase迁移到Postgres系列数据库时都存在。谢关注enterprisedb.org.cn网站,我少后将此修改的脚本放上去给大家参考!
      

  4.   

    work=# \d TT
       资料表 "public.tt"
     栏位 |  型别   | 修饰词 
    ------+---------+--------
     i    | integer | 
     I    | integer | work=# \d tt
       资料表 "public.tt"
     栏位 |  型别   | 修饰词 
    ------+---------+--------
     i    | integer | 
     I    | integer | work=# CREATE TABLE "TT"(i int,"I" int);
    work=# CREATE TABLE tt(i int,"I" int);