oracle数值和字符串函数

数值函数

  • floor ceil round trunc
-- 用法相似,会将str转为num
trunc('555.555')	-- 555
trunc(555.555, -1)	-- 550
trunc(555.555, 1)	-- 555.50, --precise为奇数时会补0至偶数位

trunc(-555.555, 2)	-- -555.55
round(-555.555, 2)	-- -555.56, 最接近的num

-- floor, ceil不支持precise参数
ceil(-555.555)		-- -555, 大于num的最小整数
floor(-555.555)		-- -556, 小于num的最大整数
  • mod remainder
-- mod使用floor, remainder使用round
mod(5, 2)		-- 1
mod(5, 3)		-- 2 = 5 - 1 * 3

remainder(5, 2)	-- 1
remainder(5, 3)	-- -1 = 5 - 2 * 3

字符串函数

  • substr instr length
-- substr(ch, pos, length)
substr('abcd', 1, 5)	-- 'abcd', 从1开始
substr('abcd', -2, 1)	-- 'c'

-- instr(str, substr)
instr('abcd', 'cd')		-- 3, 从1开始
instr('abcd', 'x')		-- 0

-- length(str)
length('a')		-- 1
length('汉')	-- 1, 汉字的长度也是1
  • trim ltrim rtrim lpad rpad
-- 不会处理中间的space
trim(' ab c ')		-- 'ab c'
ltrim(' abc ')		-- 'abc '
rtrim(' abc ')		-- ' abc'

-- 删除首尾指定char
trim('9' from '991292199')	--'12921'
trim(leading '9' from '991292199')	--'1292199'
trim(trailing '9' from '991292199')	--'9912921'

rpad('abc', 5, '+')		--'abc++'
rpad('abc', 1, '+')		--'a', 截取
rpad('abc', 0, '+')		--null
  • replace translate
-- replace(source, search, replace)
replace('abc abc', 'ab', '1');	-- '1c 1c'

-- translate(expr, from, to), 逐个字符对应替换
tranlate('abc a b c ab bc ac', 'abc', 'xyzm')
-- 'xyz x y z xy yz xz'

translate('abcd 1234', '23', '')
-- 总是返回null

-- 验证数字, to参数为空格
trim(translate('a123456789', '0123456789', ' ')) is null

正则

  • regexp_instr regexp_substr regexp_replace
regexp_instr('a1234b', '[0-9]+')	-- 2
regexp_substr('a1234a', '\d+', 4)	-- '34'
regexp_replace('a12a34a', '\d+', '00')	-- 'a00a00a'

-- 实现trim
regexp_replace('991292199', '^9+', '')	-- '1292199', 相当于leading trim
regexp_replace('991292199', '9+$', '')	-- '9912921', 相当于trailing trim

NULL

-- 注意空字符串''和0
nvl(null, 1)		-- 1
nvl('', 1)			-- 1
nvl(0, 1)			-- 0

nvl2(null, 2, 3)	-- 3
nvl2('', 2, 3)		-- 3
nvl2(1, 2, 3)		-- 2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值