oracle数据库中的mod,Oracle Database 11g SQL 开发指南学习笔记:简单函数

1、字符函数

select ascii('a'), --把字符转化为ascii码

ascii('z'),

ascii('A'),

ascii('Z'),

chr(97), --把ascii码转化为字符

chr(122),

chr(65),

chr(90)

from dual;

select concat('abc','123'), --连接字符串

'abc' || '123', --与concat函数一样

--把字符串中的每个单词的首字母转化为大写

initcap('Adescription of modern science'),

--在字符串中,查找某个单词,从1开始,查找这个单词的第一次出现,默认都为1

instr('A description of modern science','modern',1,1),

instr('A description of modern science','modern'),

--字符的个数,不是字节数

length('A description of modern science'),

lower('ALM'), --把字符串全部转化为小写

upper('aRx') --把字符串全部转化为大写

from dual;

select --默认情况下,在字符串的左边会填充空格,总长度为21

lpad('modern science',21),

--这个例子,在左边补齐字符串时,是从左向右边填充的:@#$,再@#$,再@#$,

--但由于第三次太南充时超过了21个字符,所以只填充了@符号

lpad('modern science',21,'@#$'),

--默认情况下,在字符串的右边会填充空格,总长度为21

rpad('modern science',21),

--这个例子,在右边补齐字符串时,也是从左向右填充时:@#$,再@#$,再@#$,但由于第三次太南充时超过了21个字符,所以只填充了@符号

rpad('modern science',21,'@#$')

from dual;

select --默认是截去空格

ltrim(' good bye!'),

--指定要截去*+,但下面字符串只是*+*,而不是*+*+,但最后都会把*+*都去掉

-- good bye!

ltrim('*+* good bye!','*+'),

--这个说明只要是*+,任何一个字符要出现在左边,都会被去掉,直到出现了@符号

-- good bye!

ltrim('*+++* good bye!','*+'),

--@*good bye!

ltrim('*+++*@*good bye!','*+')

from dual;

--截去右边的字符串,直到遇到非截取字符串为止

select rtrim('good bye! '), --默认去掉空格

rtrim('good bye!*+*+*','*+'), --good bye!

rtrim('good bye!*+*+ *','*+') --good bye!*+*+

from dual;

select --去掉左边和右边的*,这里的trim_string参数,不能超过1个字符

trim('*' from '*+*good bye!*+**'),

trim(' good bye ! ') --默认去掉左右的空格

from dual;

select nvl(col,'Unknown'),

nvl2(col,col,'Unknown') --如果col列的值为非空,那么还是col的值,如果为空,则为Unknown

from

(

select 'abc' as col from dual

union all

select '123' from dual

union all

select null from dual

);

select --把science替换成physics

replace('A description of modern science','science','physics'),

--从字符串中取子串,指定从哪个位置开始,所取长度

substr('A description of modern science',3,length('description'))

from dual;

--soundex函数用于获取某个单词的发音的字符串

select v,

soundex(v) --W300

from

(

select 'white' as v from dual

union all

select 'sweet' from dual

)

where soundex(v) = soundex('whyte');

另外,计算字符串所占用的字节数,而非字符数:

点击(此处)折叠或打开

select length('今天天气很热') v1,

lengthb('今天天气很热') v2

from dual

/*

6    18

*/

2、数字函数

select --绝对值

abs(-10.2),

abs(100.3),

sign(-3), --如果x为负数,那么返回-1

sign(10), --如果x为正数,那么返回1

sign(0), --如果x为0,那么返回0

mod(10,3), --取余数

--大于x的最小整数

ceil(5.8), -- 6

ceil(-5.8), -- -5

--小于x的最大整数

floor(5.8), -- 5

floor(-5.8) -- -6

from dual;

select exp(2), --e的x次幂

power(10,2), --10的2次方

sqrt(4), --4的平方根

log(2,4), --以2为底4的对数,就是4开2次方,就是2

ln(10) --以e为底10的对数,就是10开e次方

from dual;

--位与,输入的参数必须是10进制数,但这个函数又是对数字进行位与

select bitand(

bin_to_num(1,0,1), --2进制数101转换为10进制5

bin_to_num(0,1,0) --2进制数10,也就是10进制数2

)

from dual;

--注意:5.58有左边的第0位,第1位,也有右边的第0位,第1位

select round(5.58,0), -- 6 四舍五入,保留0位小数

round(5.58,1), -- 5.6 保留1位小数

round(5.58,-1), -- 10 保留1位整数,也就是去掉第0位的整数

round(5.58,-0), -- 6 保留0位整数,也就是去掉小数部分

round(4.58,-1), -- 0

--截断数字

trunc(5.58), -- 5

trunc(5.58,1), -- 5.5

trunc(5.58,-1), -- 0

trunc(4.48,-1) -- 0

from dual;

m"9"????jt_filexname=????K???U?405L?%??6?\?-" namet??W???t" class="3?E??$style%@P6f??

?????A???鬳???Bmargin-??Va|Y?M?\?Dd??1Zj*

?WV7Anor?/??Q??}>??a;?Bq"?llor%3?????M*?Μ4Ese?y?p>B?dii????(?045),?(???-??~A%??xt6%???w?$E5??1??55转为%E?9??86asci ???:?7符V;C??^?7(?FK[WK??>??m0A %????

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值