在数字类型的函数中需要注意一点是:许多函数只支持返回小数到38位
但是像一些数学类型的函数例如cos、log等都只支持到小数点后36位
像ACOS,ASin等的函数只能支持到小数点后30位
而字符类型的函数中如果函数返回char类型,长度不超过2000字节
VARchar类型长度不超过4000字节,如果长度超过,Oracle会直接截断值最大支持长度
clob类型的函数,返回长度不超过4G,一旦超过,函数直接报错。
Substr函数的各种用法
1.substr(‘abcd1234’,1,2):意思是从参函1的第参数2位开始向后取参数3位;
2.substr(‘abcd1234’,0,2):结果和第一种方式相同,但是由于对于字符来说没有第0位,所以结果是一样的。
3.substr(‘abcd1234’,2):如果不指定参数3,函数会直接截取参数2 位后的所有字符
4.substr(‘abcd1234’,-4,3):参数2位负数,指的是从后向前第四位开始
![](https://i-blog.csdnimg.cn/blog_migrate/99e1b17a2a774d2ab7beb15b631ec91c.png)
5.substr(‘abcd1234’,-10)和substr(‘abcd1234’,-8):由于字符串的总长度是8位,所以当参数1的长度大于参数1的总长度时,函数不返回值
1.replace (‘abcd1234’,’abcd’)和replace(‘abcd1234’,’abcd’,’’):replace函数中参数3为null和没有参数3的结果是一样的:
![](https://i-blog.csdnimg.cn/blog_migrate/4be15b886ac9ec6eadcee28c37c46fc1.png)
2.replace(‘abcd1234’,’’,’1234’)和replace(‘abcd1234’,’abcd’,’’):在参数2中出现null,整个函数会返回参数1,参数3为null会删除参数2中的所有字符:
![](https://i-blog.csdnimg.cn/blog_migrate/6f7b5acb3ed94fdb324674e31812f506.png)
Translate函数的各种用法
1.translate(‘abcd12334’,’123456’,’abcdef’):translate函数是在参数1中,将参数2所对应的字符用参数3中的字符替换,如果参数2中存在参数1中没有的字符,会自动排除。
![](https://i-blog.csdnimg.cn/blog_migrate/e810a3dda816c6cb6b5bc0cba44a58a9.png)
函数中的参数不检查顺序,只是以单个字符为单位执行函数。
0.translate(‘aaabbbcccddd’,’abc’,’123’):用函数来证明以上现象:
![](https://i-blog.csdnimg.cn/blog_migrate/25225374671b42cf5a231ca052f6a40d.png)
此函数执行时无视顺序,以单个字符为单位
1.translate(‘aaabbbcccddd’,’abc’,’12’):如果参数2字符长度大于参数3,在执行函数时,无视参数2中多余参数3的那一部分,参数之间是以单个字符对应的,但是由于参数2中存在C这个字符,所以函数执行之后会直接删除。
![](https://i-blog.csdnimg.cn/blog_migrate/92c74ecbe5634d41930a239002fc23c8.png)
2.translate(‘aaabbbcccddd’,’abc’,’ ‘):参数3是空格,由于SQL中会将空格视为一个字符,而且参数3中只有一个字符,所以函数执行后会将a进行替换,其他直接删除
![](https://i-blog.csdnimg.cn/blog_migrate/500b27dd68e163cb8fd51e736a82b133.png)
3.translate函数中不能出现null,否则直接返回null
![](https://i-blog.csdnimg.cn/blog_migrate/4b1a9310d920d334ffc5d23933b88f74.png)
Instr函数的各种用法
1.instr(‘abcd1234’,’123’)和instr(‘abcd1234’’12345’):由于instr函数在执行时会寻找参数中第一个字符匹配的位置,但是在寻找过程中是以参数2整个字符串为单位的。
![](https://i-blog.csdnimg.cn/blog_migrate/cc7c274839cd1394f9266c5a863f7bd2.png)
2.instr(‘abcd1234’,’12’,1)和instr(‘abcd1234’,’12’,3)和instr(‘abcd1234’,’12’,6):函数中参数3的意思是从指定的位置开始寻找,但是找到后还是会返回整个参数1中的位置,但是由于第6位之后没有12,所以函数会返回0;
![](https://i-blog.csdnimg.cn/blog_migrate/2f88556f3e8749d550095db953ce6ed1.png)
3.instr(‘abcd1234’,’12’,-3)和instr(‘abcd1234’,’12’,-6):参数3为负,首先是指从后向前数第三位,在instr函数中还指函数的寻找方向是从后向前,找到后会返回参数2在整个参数1中的绝对位置
![](https://i-blog.csdnimg.cn/blog_migrate/07746bb22c85856c80d27c8a1ec44a31.png)
4.instr(‘abcd1234abcd1234’,’12’,1,2)和instr(‘abcd1234abcd1234’,’12’,-1,2):参数4代表寻找参数2在参数1中第二次出现的位置。
![](https://i-blog.csdnimg.cn/blog_migrate/948ef176a5117592ba782d90eaac84db.png)
Trim函数的各种用法
1.rtrim(‘abc111222333’,’123’):这种用法也证明了,trim函数在执行时是以单个字符为单位的。
![](https://i-blog.csdnimg.cn/blog_migrate/c0d863cf46f2f6a3acbb7fd4ec380992.png)
2.ltrim(‘321abc123’,’123’):由于函数执行时是以单个字符为单位的,并且L关键字规定了函数只能操作整个字符串从中间开始左边的那一部分,所以整个函数会返回ABC123
![](https://i-blog.csdnimg.cn/blog_migrate/070d30dad02d05c92862bdef6a430d82.png)
3.trim(‘ abc ’):trim函数中只有参数1,并且关键字只有trim时,整个函数是用来删除字符串两边的空格的。
![](https://i-blog.csdnimg.cn/blog_migrate/332253b899d0d77877ac7082b2328e41.png)
4.trim(‘_’ from ‘___abc___’):是函数的另一种写法,但是整个函数的含义没有变化
![](https://i-blog.csdnimg.cn/blog_migrate/29653fc35a1b225d4136b2041cd3d50b.png)
Lpad补位函数:
此函数是用于对参数进行补位操作的
![](https://i-blog.csdnimg.cn/blog_migrate/fd97160bbaf641f0012e3c9e83cc0139.png)
在函数没有参数3时,会自动为参数1补空格,与trim函数是相反的
Lpad(‘1’,10,’0’):这时,函数会自动为参数1补参数3至参数2位。
chr函数是将数值转换成ASCII码中数值代表的那个字符,ASCII函数是将字符在ASCII码中所对应的数值显示出来:
![](https://i-blog.csdnimg.cn/blog_migrate/2152e145a941416196ff65477b3c630e.png)
但是对于ASCII函数,当参数中存在多个字符时,会只返回第一个字符所对应的位置
![](https://i-blog.csdnimg.cn/blog_migrate/b57fff24b9a3c39185366fad81ca1e13.png)
一些数学函数
Abs():取参数的绝对值:
![](https://i-blog.csdnimg.cn/blog_migrate/d5bb03cb94838813dcca177195a48385.png)
Power(参数1,参数2):对参数进行求次幂运算
![](https://i-blog.csdnimg.cn/blog_migrate/9c4deea509e6a987f63e34b5f98c1e69.png)
Sqrt:对参数进行平方根运算
![](https://i-blog.csdnimg.cn/blog_migrate/119dec3c8d80e31edd3012363dd27ab1.png)
Log(参数1,参数2):进行log运算
![](https://i-blog.csdnimg.cn/blog_migrate/2c4f8df71736aecc70e9c4accfdb6da2.png)
Mod函数:取余数运算,有一个特殊点是,mod函数中除数可以是0,当除数为0时,函数返回参数1.
![](https://i-blog.csdnimg.cn/blog_migrate/4fa23569b07bc4e81a9b77463e047f80.png)
Ceil()函数:求比参数大的第一个整数
![](https://i-blog.csdnimg.cn/blog_migrate/954780001132e8cb4955ed64f7b2fd06.png)
Floor()函数,求比参数小的第一个整数
![](https://i-blog.csdnimg.cn/blog_migrate/2f70e123593ae11d4486d5f705a2bf15.png)
Sign()函数:求参数是否正,如果为正返回1,为负返回-1,参数为0则返回0;
![](https://i-blog.csdnimg.cn/blog_migrate/03e278273ff83a6a338faf50bb78d667.png)
Greaest(参数1,参数2,….):函数可以存在多个参数,只返回参数中的最大值。
![](https://i-blog.csdnimg.cn/blog_migrate/a4cfd719f4d0177087e4fe7adfe8a56f.png)
Least(参数1,参数2,…)求参数中的最小值
![](https://i-blog.csdnimg.cn/blog_migrate/447990aee8658a443c8f423a85fb2dc9.png)