oracle数据类型:
1.字符串 ‘a’ ‘hello’ ‘中国’
数据库中的字符串用单引号
char(n) n和定义数组长度是一样 name char(40)
定长字符串
name char(40) ‘Jack’ 自动补齐为40个字节长度
汉字:GBK 2字节
utf-8 2-4字节
n可以省略 默认为1 n最大取值为2000
varchar2(n)
可变字符串
name varchar2(40) ‘Jack’ 只占4字节的存储空间
n不可以省略 n最大取值为4000
LONG 最多可以2G的长度
限制:1.一个表中最多只有能一个long类型的字段
2.long字段不能作为主键
3.long字节不能建索引
4.long字节不能使用在where,group by,distinct语句中
CLOB 最多可以4G的长度
字符串处理函数:
1. length 求字符串中字符的个数
一个汉字属于一个字符
(c/c++ strlen 求字符(一个字符一个字节)的个数,一个中文汉字是一个字符串)
2. concat 拼接字符串 ||
字符串连接运算符
‘hello’ ‘world’ 之间拼接 ’ 单引号是特殊字符 需要转义 ‘’’’
3. 大小写转换
lower
upper
initcap 单词首字母大写其余小写
4. 去除左右指定字符
trim(c from str) 去除str中两端所有的字符c
ltrim(str,s) 去除str中左边重复的s串
rtrim(str,s)
5. 打补丁
lpad(str,n,s) 用s字符串添加在str左边 使字符串最终有n个字符
rpad(str,n,s)
如果n小于str本身长度则截取前面n个字符
6. 查找子串在子符串中的位置(从1开始) 如果没有则返回0
instr(str,s,[beg[,cnt]])
beg是开始查找的位置 默认是1 如果beg是负值则从后往前找
cnt是第几个子串 默认是1
7. 截取子串
substr(str,beg[,len])
beg开始截取位置 beg也可以是负数
len是截取字符的个数 默认是截取到字符串末尾
8. 替换子串
replace(str,s1,s2)
把str中所有的子串s1都整体用s2替换掉
9. 翻译字符
translate(str,s1,s2)
把str字符串中所有在s1中的字符用s2所对应位置的字符替换掉
2.数值
number(p,s) p表示总位数 s表示小数有几位 十进制位数
number§ 整数 p最大取值 38
数值处理函数:
1. round 四舍五入
round(num,n)
如果n>0 表示四舍五入到小数点后第n位
n<0 表示四舍五入到小数点前第|n|+1位
n默认是0 四舍五入到个数
2. trunc 直接舍弃 参数和round一样
3. mod 求余
4. ceil floor
向上取整 向下取整
5. greatest(n,…) 最大值
least(n,…) 最小值
3.时间
date 7字节
世纪
年
月
日
时
分
秒
timestamp 8-11字节 前七个字节和date一样,后面表示毫秒数
3.时间
date 7字节
世纪
年
月
日
时
分
秒
timestamp 8-11字节 前七个字节和date一样,后面表示毫秒数
select sysdate,systimestamp from dual;
处理函数:
时间加减一个整数相当于加减这个值的天数
两个日期相减得到相关的天数
add_months(d,n) 日期加上一个月份 n可正可负
months_between(d1,d2) 日期相差的天数
next_day(d,n) 下一个星期X的日期
n取值 1-7 1表示星期天 2星期一
last_day(d) 当前月份的最后一天
extract(year|month|day from date)
to_date(str,fmt) 把字符串按照格式字符串转换成时间
to_char(date,fmt) 把时间格式化为字符串
fmt: 大写小写不区分
yyyy 四位年
yy 两位年
MM 月份
dd 日
hh24 24小时制的小时
hh 12小时制的小时
mi 分钟
ss 秒数
FF 毫秒数
类型转换函数:
to_char
to_date
to_number
fmt:
9 表示任意一位数值
0 显示前导0和小数后无用的0
. 小数点
$ 货币符号 $
L 本地货币符号
select to_char(sysdate,‘yyyy"年"mm"月"dd"日" hh"时"mi"分"ss"秒"’) from dual;
XXXX年XX月XX日 XX时XX分XX秒
4.特殊的值 空值 null
(1)null 与 任何值 进行运算 都将得到 null
(2)任何类型的字段取值都可以为null
(3)插入记录时如果没有指定value则对应的字段为null
默认值
create table tab_name(col_name col_type default val,…);
如果该字段在插入时指定了值则为指定的值,如果没有则为default val
空值处理函数
nvl(expr,expr1) 相当于效果: expr!=null?expr:expr1
nvl2(expr,expr1,expr2) expr!=null?expr1:expr2