CUBRID学习笔记 26 数据类型3cubrid教程
接上面的集合
集合之 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教程的更多相关文章
- CUBRID学习笔记 27 数据类型4
范围比较 数字和字符串比较 字符串被转为double SELECT i FROM t WHERE i <= all {'11','12'}; i ============= 1 2 3 4 字符 ...
- CUBRID学习笔记 25 数据类型2
---恢复内容开始--- 6枚举类型 语法 <enum_type> : ENUM '(' <char_string_literal_list> ')' <char_str ...
- CUBRID学习笔记 24 数据类型1
---恢复内容开始--- 一 数字类型 注意小数的四舍五入问题 1数字型 Type Bytes Mix Max Exact/approx. SHORTSMALLINT 2 -32,768 32,76 ...
- CUBRID学习笔记 11 数据类型之日期
datetime 虽然和mysql很相像,但是日期类型和mysql是不一样的.和sqlserver差不多. 如YYYY-MM-DD hh:mi:ss.fff or mm/dd/yyyy hh:mi:s ...
- 学习笔记《简明python教程》
学习笔记<简明python教程> 体会:言简意赅,很适合新手入门 2018年3月14日21:45:59 1.global 语句 在不使用 global 语句的情况下,不可能为一个定义于函数 ...
- CUBRID学习笔记 45 REPLACE DELETE MERGE 教程
c#,net,cubrid,教程,学习,笔记欢迎转载 ,转载时请保留作者信息.本文版权归本人所有,如有任何问题,请与我联系wang2650@sohu.com . 过错 ------ 官方文档是英文的, ...
- CUBRID学习笔记 44 UPDATE 触发器 更新多表 教程
cubrid的中sql查询语法UPDATE c#,net,cubrid,教程,学习,笔记欢迎转载 ,转载时请保留作者信息.本文版权归本人所有,如有任何问题,请与我联系wang2650@sohu.com ...
- CUBRID学习笔记 3 net连接数据库并使用cubrid教程示例
接上文 数据库安装好后,也可以测试语句了. 下面我们用c#写一个控制台程序,连接数据库,并读取数据. 一 下载驱动 net版的下 CUBRID ADO.NET Data Provider 9.3.0 ...
- CUBRID学习笔记 2 安装教程
下载地址 http://www.cubrid.org/?mid=downloads&item=any&os=detect&cubrid=9.3.0 选择适合你的服务器版本 l ...
随机推荐
- spring支持的websocket
首发:个人博客 必须说明:这篇博文只用于自己记录,使用spring的websocket支持一定要看官方文档,权威又简明,不推荐看不专业又啰嗦的国产博文. 已尝试了两种方法,当然,不管哪种方法都要先添加 ...
- 阿里BCG重磅报告《人工智能,未来致胜之道》
阿里BCG重磅报告<人工智能,未来致胜之道> 阿里云研究中心.波士顿咨询公司以及Alibaba Innovation Ventures合作共同推出的<人工智能:未来制胜之道>这 ...
- 将linux下的rm命令改造成移动文件至回收站【转】
转自:http://blog.csdn.net/a3470194/article/details/16863803 [-] 将linux下的rm命令改造成移动文件至回收站 将AIX下的rm命令改造成移 ...
- webApi FileReader
https://developer.mozilla.org/en-US/docs/Web/API/FileReader https://github.com/node-file-api/FileRea ...
- weblogic的jar包冲突
异常: Error creating bean with name 'sessionFactoryWrite' defined in class path resource [applicationC ...
- ectouch第四讲 之缓存文件的生成
当第一次访问\mobile主页的时候,就会生成如下缓存文件:缓存文件存放在\mobile\data\cache\文件夹下 |-mobile |-data |-cache |-compiled [前台编 ...
- HDU 1520:Anniversary party(树形DP)
http://acm.split.hdu.edu.cn/showproblem.php?pid=1520 Anniversary party Problem Description There i ...
- Resolving failed: Temporary failure in name resolution 错误解决方法
首先,检查自己的服务器是否配置了DNS: 其次,在确认了自己已经配置了DNS后,并且域名解析已经正常的情况下,还有上面的问题,接下来就是重启自己的web服务器.比如,apache,nginx等. ...
- 单利 复利计算器程序1.0 2.0 3.0 [ 合 ] 之 C语言
本程序用C语言编写~~~ 1.计算:本金为100万,利率或者投资回报率为3%,投资年限为30年,那么,30年后所获得的利息收入:按复利计算公式来计算就是:1,000,000×(1+3%)^30 1 v ...
- Django - 02 优化一个应用
Django - 02 优化一个应用 上一篇中我们已经创建了一个blog app,现在来用一下~ 2.1 添加第一篇blog 这个post 列表很丑陋哦,连标题都木有显示~ 2.2 自定义bl ...