接上面的集合

集合之 set

每个集合元素是不同的值, 但是类型只能是一种.也可以有其他表的记录 如下

CREATE TABLE set_tbl ( col_1 set(CHAR(1)));

INSERT INTO set_tbl VALUES ({'c','c','c','b','b','a'});

INSERT INTO set_tbl VALUES ({NULL});

INSERT INTO set_tbl VALUES ({''});

SELECT * FROM set_tbl;

col_1

======================

{'a', 'b', 'c'}

{NULL}

{' '}

SELECT CAST(col_1 AS MULTISET), CAST(col_1 AS LIST) FROM set_tbl;

cast(col_1 as multiset)   cast(col_1 as sequence)

============================================

{'a', 'b', 'c'}  {'a', 'b', 'c'}

{NULL}  {NULL}

{' '}  {' '}

INSERT INTO set_tbl VALUES ('');

ERROR: Cannot coerce '' to type set.

集合 MULTISET

和set差不多.但是元素的内容可重复

CREATE TABLE multiset_tbl ( col_1 multiset(CHAR(1)));

INSERT INTO multiset_tbl VALUES ({'c','c','c','b','b', 'a'});

SELECT * FROM multiset_tbl;

col_1

======================

{'a', 'b', 'b', 'c', 'c', 'c'}

SELECT CAST(col_1 AS SET), CAST(col_1 AS LIST) FROM multiset_tbl;

cast(col_1 as set)   cast(col_1 as sequence)

============================================

{'a', 'b', 'c'}  {'c', 'c', 'c', 'b', 'b', 'a'}

集合 之list

可重复的,但是是有序的.保持插入前的顺序.list本身不会对内容排序.

CREATE TABLE list_tbl ( col_1 list(CHAR(1)));

INSERT INTO list_tbl VALUES ({'c','c','c','b','b', 'a'});

SELECT * FROM list_tbl;

col_1

======================

{'c', 'c', 'c', 'b', 'b', 'a'}

SELECT CAST(col_1 AS SET), CAST(col_1 AS MULTISET) FROM list_tbl;

cast(col_1 as set)  cast(col_1 as multiset)

============================================

{'a', 'b', 'c'}  {'a', 'b', 'b', 'c', 'c', 'c'}

隐式转换

From \ To

DATETIME

DATE

TIME

TIMESTAMP

DOUBLE

FLOAT

NUMERIC

BIGINT

DATETIME

-

O

O

O

       

DATE

O

-

 

O

       

TIME

   

-

         

TIMESTAMP

O

O

O

-

       

DOUBLE

       

-

O

O

O

FLOAT

       

O

-

O

O

NUMERIC

       

O

O

-

O

BIGINT

       

O

O

O

-

INT

     

O

O

O

O

O

SHORT

       

O

O

O

O

MONETARY

       

O

O

O

O

BIT

               

VARBIT

               

CHAR

O

O

O

O

O

O

O

O

VARCHAR

O

O

O

O

O

O

O

O

NCHAR

O

O

O

O

O

O

O

O

VARNCHAR

O

O

O

O

O

O

O

O

Implicit Type Conversion Table 2

From \ To

INT

SHORT

MONETARY

BIT

VARBIT

CHAR

VARCHAR

NCHAR

VARNCHAR

DATETIME

         

O

O

O

O

DATE

         

O

O

O

O

TIME

         

O

O

O

O

TIMESTAMP

         

O

O

O

O

DOUBLE

O

O

O

   

O

O

O

O

FLOAT

O

O

O

   

O

O

O

O

NUMERIC

O

O

O

   

O

O

O

O

BIGINT

O

O

O

   

O

O

O

O

INT

-

O

O

   

O

O

O

O

SHORT

O

-

O

   

O

O

O

O

MONETARY

O

O

-

   

O

O

O

O

BIT

     

-

O

O

O

O

O

VARBIT

     

O

-

O

O

O

O

CHAR

O

O

O

O

O

-

O

O

O

VARCHAR

O

O

O

O

O

O

-

O

O

NCHAR

O

O

O

O

O

O

O

-

O

VARNCHAR

O

O

O

O

O

O

O

O

-

转换规则

插入和修改

数据会转为目标列的数据类型

CREATE TABLE t(i INT);

INSERT INTO t VALUES('123');

SELECT * FROM t;

i

=============

123

函数

参数被转为函数的参数类型,如下  mod参数需要的是数字类型. 所以传入的字符串被转为数字

SELECT MOD('123','2');

mod('123', '2')

==========================

1.000000000000000e+00

层次关系

  • Date/Time Type (DATETIME > TIMESTAMP > DATE > TIME)
  • Approximate Numeric Type (MONETARY > DOUBLE > FLOAT)
  • Exact Numeric Type (NUMERIC > BIGINT > INT > SHORT)
  • String Type (CHAR/NCHAR > VARCHAR/VARNCHAR)

比较操作

perand1 Type

operand2 Type

Conversion

Comparison

Numeric Type

Numeric Type

None

NUMERIC

String Type

Converts operand2 to DOUBLE

NUMERIC

Date/Time Type

None

N/a

String Type

Numeric Type

Converts operand1 to DOUBLE

NUMERIC

String Type

None

String

Date/Time Type

Converts operand1 to date/time type

Date/Time

Date/Time Type

Numeric Type

None

N/A

String Type

Converts operand2 to date/time type

Date/Time

Date/Time Type

Converts it to the type with higher priority

Date/Time

字段类型的转换

operand1 Type

operand2 Type

Conversion

Comparison

String type

Numeric type

Converts operand2 to the string type

String

Date/Time type

Converts operand2 to the string type

String

If operand2 is a set operator(IS IN, IS NOT IN, = ALL, = ANY, < ALL, < ANY, <= ALL, <= ANY, >= ALL, >= ANY), the exception above is not applied.

如果operand2 是集合操作 如 IS IN, IS NOT IN, = ALL, = ANY, < ALL, < ANY, <= ALL, <= ANY, >= ALL, >= ANY, 则不适用

数字和字符串比较

字符串将被转换为dobule类型

CREATE TABLE t(i INT, s STRING);

INSERT INTO t VALUES(1,'1'),(2,'2'),(3,'3'),(4,'4'), (12,'12');

SELECT i FROM t WHERE i < '11.3';

i

=============

1

2

3

4

SELECT ('2' <= 11);

('2'<11)

=============

1

字符串和日期比较

字符串被转为日期

SELECT ('2010-01-01' < date'2010-02-02');

('2010-01-01'<date '2010-02-02')

==================================

1

SELECT (date'2010-02-02' >= '2010-01-01');

字符串类型和系统的数字类型

数字被转为字符串

PREPARE s FROM 'SELECT s FROM t WHERE s < ?';

EXECUTE s USING 11;

s

===================

'1'

字符串类型和数字类型

数字被转为字符串

SELECT s FROM t WHERE s > 11;

s

==================

'2'

'3'

'4'

'12'

SELECT s FROM t WHERE s BETWEEN 11 AND 33;

s

======================

'2'

'3'

'12'

字符串和日期类型

日期转为字符串

SELECT s FROM t;

s

======================

'01/01/1998'

'01/01/1999'

'01/01/2000'

SELECT s FROM t WHERE s <= date'02/02/1998';

s

======================

'01/01/1998'

'01/01/1999'

'01/01/2000'

(date '2010-02-02'>='2010-01-01')

===================================

CUBRID学习笔记 26 数据类型3cubrid教程的更多相关文章

  1. CUBRID学习笔记 27 数据类型4

    范围比较 数字和字符串比较 字符串被转为double SELECT i FROM t WHERE i <= all {'11','12'}; i ============= 1 2 3 4 字符 ...

  2. CUBRID学习笔记 25 数据类型2

    ---恢复内容开始--- 6枚举类型 语法 <enum_type> : ENUM '(' <char_string_literal_list> ')' <char_str ...

  3. CUBRID学习笔记 24 数据类型1

    ---恢复内容开始--- 一 数字类型  注意小数的四舍五入问题 1数字型 Type Bytes Mix Max Exact/approx. SHORTSMALLINT 2 -32,768 32,76 ...

  4. CUBRID学习笔记 11 数据类型之日期

    datetime 虽然和mysql很相像,但是日期类型和mysql是不一样的.和sqlserver差不多. 如YYYY-MM-DD hh:mi:ss.fff or mm/dd/yyyy hh:mi:s ...

  5. 学习笔记《简明python教程》

    学习笔记<简明python教程> 体会:言简意赅,很适合新手入门 2018年3月14日21:45:59 1.global 语句 在不使用 global 语句的情况下,不可能为一个定义于函数 ...

  6. CUBRID学习笔记 45 REPLACE DELETE MERGE 教程

    c#,net,cubrid,教程,学习,笔记欢迎转载 ,转载时请保留作者信息.本文版权归本人所有,如有任何问题,请与我联系wang2650@sohu.com . 过错 ------ 官方文档是英文的, ...

  7. CUBRID学习笔记 44 UPDATE 触发器 更新多表 教程

    cubrid的中sql查询语法UPDATE c#,net,cubrid,教程,学习,笔记欢迎转载 ,转载时请保留作者信息.本文版权归本人所有,如有任何问题,请与我联系wang2650@sohu.com ...

  8. CUBRID学习笔记 3 net连接数据库并使用cubrid教程示例

    接上文 数据库安装好后,也可以测试语句了. 下面我们用c#写一个控制台程序,连接数据库,并读取数据. 一 下载驱动  net版的下 CUBRID ADO.NET Data Provider 9.3.0 ...

  9. CUBRID学习笔记 2 安装教程

    下载地址  http://www.cubrid.org/?mid=downloads&item=any&os=detect&cubrid=9.3.0 选择适合你的服务器版本 l ...

随机推荐

  1. eclipse字体颜色设置

    修改编码:window-->perference--->General--> Configure.--> Configure.-->workspace修改编辑背景色:wi ...

  2. Install DBD::mysql for Perl in XAMPP in Mac , solving errors

    我不知道 why,在 Mac 安装 DBI::mysql 总会报错 我为了给 cgi-bin 添加 mysql-perl 数据库支持,也是够麻烦的 make sure that mysql and m ...

  3. halcon学习笔记——机器视觉工程应用的开发思路【转】

    转自:http://www.cnblogs.com/hanzhaoxin/archive/2013/02/15/2912879.html 机器视觉工程应用主要可划分为硬件和软件两大部分. 硬件:工程应 ...

  4. cpu进程调度---RT Throttling【转】

    转自:http://book.2cto.com/201302/16291.html RT Throttling是对分配给实时进程的CPU时间进行限制的功能.使用实时调度策略的进程由于bug等出现不可控 ...

  5. JavaEE基础(九)

    1.面向对象(多态的概述及其代码体现) A:多态(polymorphic)概述 事物存在的多种形态 B:多态前提 a:要有继承关系. b:要有方法重写. c:要有父类引用指向子类对象. C:案例演示 ...

  6. javascript——web前端编程

    一.弹出提示框: 连接 function disp_prompt()  {  var name=prompt("请输入您的名字","Bill Gates")  ...

  7. AR专用汉明码

    增强现实技术(Augmented Reality,简称 AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像.视频.3D模型的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动. ...

  8. java.lang.IllegalStateException异常简单分析和简单解决

    我们在做文件上传或者下载,或者过滤等操作时,可能要用到页面的输出流. 例如在JSP使用: response.reset(); response.setContentType(”application/ ...

  9. 人活着系列之平方数 分类: sdutOJ 2015-06-22 17:10 7人阅读 评论(0) 收藏

    人活着系列之平方数 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 偶然和必然?命运与意志?生与死?理性与情感?价值与非价值?在&quo ...

  10. CSUFT 1005 Coffin Tiles

    1005: Coffin Tiles Time Limit: 1 Sec      Memory Limit: 128 MB Submit: 2      Solved: 2 Description ...