zoukankan      html  css  js  c++  java
  • PostgreSQL中的collations

    与Oracle相比,PostgreSQL对collation的支持依赖于操作系统。

     

    以下是基于Centos7.5的测试结果

    $ env | grep LC
    $ env | grep LANG
    LANG=en_US.UTF-8
    

      

    使用initdb初始化集群的时候,就会使用这些操作系统的配置。

    postgres=# l
                                      List of databases
       Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
    -----------+----------+----------+-------------+-------------+-----------------------
     postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
     template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
               |          |          |             |             | postgres=CTc/postgres
     template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
               |          |          |             |             | postgres=CTc/postgres
    (4 rows)
    
    postgres=# 
    

      

    在新建数据库的时候,可以指定数据库的默认的callation:

    postgres=# create database abce with LC_COLLATE = "en_US.UTF-8";
    CREATE DATABASE
    postgres=# create database abce2 with LC_COLLATE = "de_DE.UTF-8";
    ERROR:  new collation (de_DE.UTF-8) is incompatible with the collation of the template database (en_US.UTF-8)
    HINT:  Use the same collation as in the template database, or use template0 as template.
    postgres=# 
    

    但是,指定的collation必须是与template库兼容的。或者,使用template0作为模板。

     

    如果想看看操作系统支持哪些collations,可以执行:

    $ localectl list-locales
    

      

    也可以登录postgres后查看:

    postgres=# select * from pg_collation ;
    

      

  • 相关阅读:
    正则表达式匹配中国区的电话号码
    落户
    存储过程与函数的区别转载
    asp.net页面从初始化到卸载事件顺序转
    .net连接Oracle数据库 常见问题
    sql触发器的类型
    (转) C++中extern “C”含义深层探索
    vmware 收缩越来越大的磁盘文件
    (转)一些常用的网站
    工具:P/Invoke Interop Assistant
  • 原文地址:https://www.cnblogs.com/abclife/p/13924350.html
Copyright © 2011-2022 走看看