首页 > 数据库 >oracle 12.2+支持mysql与postgresql中的collate(排序规则)特性

oracle 12.2+支持mysql与postgresql中的collate(排序规则)特性

时间:2022-12-10 16:32:43浏览次数:64  
标签:CI postgresql COLLATE t1 12.2 location WHERE id collate

  sql server, mysql, postgresql都支持针对字符串类型定义排序规则的概念(collate),一般来说,排序规则分为三种:基于二进制,是否区分大小写,是否区分重音。

例如sql server中:

SELECT * FROM MyTable
WHERE MyField = 'BobDillon' COLLATE Latin1_General_CI_AI

oracle可以使用:

SELECT *
FROM MyTable
WHERE NLSSORT(MyField, 'NLS_SORT = Latin_CI') = NLSSORT('BobDillon', 'NLS_SORT = Latin_CI')

postgresql中:

CREATE TABLE test1 (
a text COLLATE "de_DE",
b text COLLATE "es_ES",
...
);
SELECT a < ('foo' COLLATE "fr_FR") FROM test1;

​https://www.postgresql.org/docs/13/collation.html​

oracle 12.2开始支持collate的概念,使用也类似:

CREATE TABLE t1 (
id NUMBER,
company VARCHAR2(15 CHAR) COLLATE BINARY_CI,
CONSTRAINT t1_pk PRIMARY KEY (id)
);

INSERT INTO t1 VALUES (1, 'Löwenbrauerei');
INSERT INTO t1 VALUES (2, 'LÖwenbrauerei');
INSERT INTO t1 VALUES (3, 'Lowenbrauerei');
INSERT INTO t1 VALUES (4, 'LOwenbrauerei');
COMMIT;


ALTER TABLE t1 ADD (
location VARCHAR2(15 CHAR) COLLATE BINARY_AI
);


UPDATE t1 SET location = 'Bräunlingen' WHERE id = 1;
UPDATE t1 SET location = 'BrÄunlingen' WHERE id = 2;
UPDATE t1 SET location = 'Braunlingen' WHERE id = 3;
UPDATE t1 SET location = 'BrAunlingen' WHERE id = 4;
COMMIT;


SELECT *
FROM t1
WHERE location LIKE '%ä%';

ID COMPANY LOCATION
---------- --------------- ---------------
1 Löwenbrauerei Bräunlingen
2 LÖwenbrauerei BrÄunlingen
3 Lowenbrauerei Braunlingen
4 LOwenbrauerei BrAunlingen


-- 也支持表级别默认的COLLATE
CREATE TABLE t1 (
id NUMBER,
company VARCHAR2(15 CHAR),
CONSTRAINT t1_pk PRIMARY KEY (id)
)
DEFAULT COLLATION BINARY_CI;

-- schema级别也支持默认的COLLATE
CREATE USER test2 IDENTIFIED BY test2
DEFAULT TABLESPACE users
QUOTA UNLIMITED ON users
DEFAULT COLLATION BINARY_CI;

-- 还支持语句级别、会话级别


标签:CI,postgresql,COLLATE,t1,12.2,location,WHERE,id,collate
From: https://blog.51cto.com/zhjh256/5927793

相关文章

  • oracle/mysql/lightdb/postgresql java jdbc类型映射
    MySQL数据类型JAVA数据类型JDBCTYPE普通变量类型主键类型BIGINTLongBIGINT支持支持TINYINTByteTINYINT支持不支持SMALLINTShortSMALLINT支持不支持MEDIUMINTIntegerINTEGER......
  • lightdb for postgresql日志详解
    log_min_messages:控制服务器日志级别,总控参数,log_min_error_statement要大于等于log_min_messages时,SQL语句才会被记录(默认ERROR,足够)。默认是WARNING,每个级别的定义如下......
  • PostgreSQL 使用数组类型及mybatis操作数组类型
    为啥要用到数组类型呢?因为​​ES支持数组类型​​,为了迁移遍历,所以也支持数组类型。selectdocid,authorsfromsearch_doc_new_icwhereauthors@>'{"惠普"}'limit1......
  • postgresql等待事件之wait_event为空null解析
    查看某个语句的当前等待事件可以查询pg_stat_activity表(类似于Oracle的v$session),如下所示:selectwait_event_type,wait_event,state,query,a.*frompg_stat_activitya......
  • postgresql报错总结
    报错一:[postgres@vm-node2~]$psqlpsql:couldnotconnecttoserver:NosuchfileordirectoryIstheserverrunninglocallyandacceptingconnectionsonUnix......
  • PostgreSQL开启审计日志
    配置情况如下 #开启数据库告警日志记录;logging_collector=on#日志文件格式为csv;log_destination='csvlog'#产生的日志文件位于data目录下的hgdb_log中log_dire......
  • postgresql 之 数据目录内部结构 简介
    转:https://blog.csdn.net/happytree001/article/details/125610460一、一切皆为Oid在Linux中一切皆为文件,在postgresql中一切皆为Oid。1.1什么是OidObjectidentifier......
  • postgresql数据库导入导出
    一、常规操作1、进入数据库psql-hlocalhost-p5432-Ukong2、查看库kong=#\lListofdatabasesName|Owner|Encodin......
  • docker 部署 rabbitmq(持久化) 和postgresql redis mysql
    rabbitmq:dockerrun-d--hostname=rabbitmq--restart=always-eRABBITMQ_DEFAULT_USER=admin-eRABBITMQ_DEFAULT_PASS=admin--name=rabbitmq-p5672:5672-p15672......
  • PostgreSQL 12系统表(2)
    转:https://blog.csdn.net/weixin_49756466/category_11607112.htmlpg_namespace存储名字空间   pg_sequence包含有关序列的信息。   pg_indexes提供了数据......