CUBRID学习笔记 26 数据类型3

接上面的集合

集合之 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‘)

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

时间: 2024-08-27 08:21:13

CUBRID学习笔记 26 数据类型3的相关文章

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

datetime 虽然和mysql很相像,但是日期类型和mysql是不一样的.和sqlserver差不多. 如YYYY-MM-DD hh:mi:ss.fff or mm/dd/yyyy hh:mi:ss.fff 当然 还有短日期类型date   2012-10-29 这种

python基础教程_学习笔记26:好玩的编程

好玩的编程 程序设计的柔术 当大家坐下来并计划应该如何组织程序的时候,对于这个具体的程序,还没有任何的经验.在实现功能的时候,会逐渐地学到对原始设计有用的新知识.不应该无视一路走来所吸取的教训,而应该将它们用于软件的重新设计(或重构)中. 灵活性的实现包括许多方面,下面是其中两个: 原型设计:python最棒的功能之一就是可以快速地编写程序.编写原型程序是更充分地了解问题的一种很好的方法. 配置:灵活性有很多种存在形式.配置的目的就是让程序某部分的改变更简单,对于你和用户来说都是这样. 第三点是

C++学习笔记之数据类型

一.变量名 几条简单的C++命名规则: 在名称中只能使用字母,数字和下划线 名称的第一个字符不能是数字 区分大小写 不能将C++关键字用作名称 以两个下划线和大写字母打头的名称被保留给实现(编译器及其使用资源)使用.以一个下划线开头的名称被保留给实现,用作全局标识符. C++对名称长度没有限制 二.数据类型 计算机内存的最基本单元是位(bit).字节(byte)通常指的是8位内存单元,可以表示的范围0-255或者-128到127. (1)整型 short至少16位(大多数系统16位,-32768

C++学习笔记26,虚函数

在C++里面,虚函数是一类重要的函数!可以通过虚函数定义不同对象同一行为的不同实现. 举一个简单的例子: #include <iostream> #include <string> using namespace std; class Animal{ protected: string name; public: Animal(const string &s):name(s){ } virtual ~Animal(){ } virtual void speak()const

Oracle之PL/SQL学习笔记之数据类型(三)

Oracle之PL/SQL学习笔记之数据类型(三) 所有的编程语言中变量是使用最频繁的.PL/SQL作为一个面向过程的数据库编程语言同样少不了变量,利用变量可以把PL/SQL块需要的参数传递进来,做到动态执行程序,同时也可以利用变量在PL/SQL内部进行值得传递,甚至可以把值传递出去,最终返回给用户,由此可见,变量是PL/SQL不可或缺的一部分. 1. Oracle预定义的普通数据类型(常见的数据类型) 类型 子类 说明 Oracle中的范围 char Character,String Rowi

[原创]java WEB学习笔记26:MVC案例完整实践(part 7)---修改的设计和实现

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------

swift学习笔记之数据类型

前言:这份学习笔记是写给有编程经验的人看的,因为内容方面很多基础知识被省略掉了,所以请初学者们勿怪我写得不详尽. swift包括如下数据类型: 1.整型 Int var age:Int = 20 let age:Int = 20 [注]在此说一下swift较Objective-C的改变. 1)以前定义一个变量如整型的,我们会想下面这样写 NSInteger age = 20; 现在定义变量得用var关键字,然后在变量名称后面使用冒号加变量类型的方式,或者声明类型,如下: var age = 20

java学习笔记之一------数据类型及常用转换

java数据类型划分 分为两大类型: 1)基本数据类型:类似于普通的值. 2)引用数据类型:传递的是内存的地址. 浮点类型实际上就是表示小数. java基本数据类型 数据的溢出 当整数的数据大小超出了可以表示的范围,而程序中又没有做数值范围的检查时,这个整型变量所输出的值将发生絮乱,且不是预期的运行结果. 例如:求出整型的最大值 [java] view plaincopy public class T { public static void main(String[] args) { int 

数据库学习笔记2--MySQL数据类型

?[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4028040.html [正文] 上一章节中,我们学习了MySQL软件的安装,既然软件都装好了,现在就正式开始MySQL的基础知识的学习吧,即使是零基础,也要一步一个脚印.恩,首先要学习的就是MySQL的数据类型. 一.数据类型: 1.整型(xxxint) 2.浮点型(float和double)