第一节:字符串类型及函数
1、字符类型
• CHAR:一个定长字符串,当位数不足自动用空格填充来达到其最大长度。如非NULL的CHAR(12)总是包含12字节信息。CHAR字段最多可以存储2,000字节的信息。
• VARCHAR2:目前这也是VARCHAR 的同义词。这是一个变长字符串,与CHAR 类型不同,它不会用空格填充至最大长度。VARCHAR2(12)可能包含0~12字节的信息。VARCHAR2最多可以存储4,000 字节的信息。
CHAR和VARCHAR2的比较
CHAR(4) “A“ 实际在数据库中存储为"A “
“ABCDE”超长报错
VARCHAR2(4) “A” 存储的还是“A”
“ABCDE”超长报错
汉字:每个汉字占多少字节,要看具体的编码方式,如UTF-8(1-3字节)、
GB2312(2字节)、GBK(2字节)、GB18030(1、2、4字节)
2、常用函数
lower() 返回字符串小写:select lower(userName) from t_user;
upper() 返回字符串大写:select upper(userName) from t_user;
length() 返回字符串长度:select length(password) from t_user;
substr() 截取字符串:select substr (userName,1,2) from t_user;
instr() 获取字符串出现的位置:select instr(password,'23',2,2) from t_user;第一个2表示重第二个位置开始查,第二个二表示第2次出现
concat() 串联字符串:select concat (userName,password) from t_user;
reverse() 反转字符串:select everse (userName) from t_user;
第二节:数值类型及函数
1、数值类型
• NUMBER:该数据类型能存储精度最多达38位的数字。每个数存储在一个变长字段中,其长度在0~22字节之间。Oracle的NUMBER类型精度很高, 远远高于许多编程语言中常规的FLOAT和DOUBLE类型。
NUMBER( p,s ) p表示精度(总长度) s表示小数位置且四舍五入
NUMBER(10,3) 10是总长度,3是小数位数的长度
123.456
123.4567 :将存储为123.457
12345679.899 :精度超长了,10是总长度,3是小数位, 整数位为10-3=7位
NUMBER(10)==NUMBER(10,0) java.lang.Integer
NUMBER(19)==NUMBER(19,0) java.lang.Long
2、常用函数
abs() 求绝对值;select abs(n1) from t_number where id=1;
round() 四舍五入:select round(n1,2) from t_number where id=1;
ceil() 向上取整:select ceil(n1) from t_number where id=2;
floor 向下取整:select floor(n1) from t_number where id=2;
Mod()取模:select mod(5,3) from dual;
Sign()正负性:select sign(n1) from t_number where id=1;
Sqrt() 求平方根:select sqrt(9) from dual;
Power()求乘方:select power(2,3) from dual;
Trunc()截取:select trunc(123.456,2) from dual;截取两位小数位,运行后结果123.45
To_char() 格式化数值:常见的字符匹配有 0、9、,、$、FM、L、C, FM可以与$,L,C一起使用
select to_char(123.45,'0000.000') from dual;-----------> 1230.450
select to_char(123.45,'9999.999') from dual;-----------> 123.450
select to_char(123123,'99,999,999.99') fromd ual;-----------> 123,123.00
select to_char(123123.3,'FM99,999,999.99') from dual;----------->123,123,.3 FM可去掉前面空格和后面的0.
select to_char(123123.3,'$99,999,999.99') from dual;-----------> $123,123.3
select to_char(123123.3,'L99,999,999.99') from dual;-----------> ¥123,123.30
select to_char(123123.3,'99,999,999.99C') from dual;-----------> 123,123,30CNY
第三节:日期类型及函数
1、日期类型
• DATE:一个7字节的定宽日期/时间数据类型。其中总包含7个属性,包括:世纪、世纪中哪一年、月份、月中的哪一天、小时、分钟和秒。
• TIMESTAMP:一个7 字节或12.字节的定宽日期/时间数据类型。它与DATE 数据类型不同,因为TIMESTAMP 可以包含小数秒(fractional second);带小数秒的TIMESTAMP 在小数点右边最多可以保留9位。
2、常用函数
Add_months 添加月份: selectadd_months(d1,2)from t_date where id=1;
Last_day 返回指定日期月份的最后一天: select last_day(d1) from t_date where id=1;
updatet_datesetd3=to_date('2016-12-20','YYYY-MM-DD') whereid=1;
updatet_datesetd3=to_date('2016-12-2018:31:34','YYYY-MM-DD HH24:MI:SS') whereid=1;
Months_between 返回两个日期的相差月数 select month s_between(d1,d3) fromt_date where id=1;
next_day 返回特定日期之后的一周内的日期:select next_day(d1,2) from t_date where id=1;
Trunc 截取日期:
select trunc(d1,'YYYY') from t_date where id=1;
select trunc(d1,'MM') from t_date where id=1;
select trunc(d1,'DD') from t_date where id=1;
select trunc(d1,'HH') from t_date where id=1;
select trunc(d1,'MI') from t_date where id=1;
Extract 返回日期的某个域:
select extract(year from sysdate) from dual;
select extract(month from sysdate) from dual;
select extract(day from sysdate) from dual;
select extract(Hour from systimestamp) from dual;
select extract(minute from systimestamp) from dual;
select extract(second from systimestamp) from dual;
To_char 将日期转换成字符串:
selectto_char(d1,'YYYY-MM-DD') fromt_datewhereid=1;
selectto_char(d1,'YYYY-MM-DDHH24:MI:SS') fromt_datewhereid=1;
第四节:二进制及其他大数据文本
• BLOB: (binary large object)在Oracle9i及以前的版本中, 这种数据类型允许存储最多4GB的数据, 在Oracle 10g及以后的版本中允许存储最多(4GB)×(数据库块大小)字节的数据。BLOB包含不需要进行字符集转换的“二进制“数据,如果要存储电子表格、字处理文档、图像文件等就很适合采用
• CLOB:(Character Large Object)在Oracle9i及以前的版本中, 这种数据类型允许存储最多4GB的数据, 在Oracle 10g及以后的版本中允许存储最多(4GB)×(数据库块大小)字节的数据。CLOB包含要进行字符集转换的信息。这种数据类型很适合存储纯文本信息。