Oracle函数和梧桐2.0函数对比使用介绍
Oracle 在使用中有些常用的函数,我们针对这些函数内容梳理了基于梧桐2.0版本的替代解决方法,以便用户在平时国产化项目及其他工作更加方便的对照和参考。
1、字符串函数和操作符
| Oracle函数 | 梧桐函数 | 返回类型 | 描述 | 例子 | 结果 |
|---|---|---|---|---|---|
| length(char) | char_length(string) or character_length(string) |
int | 字符串的字符个数 | Oracle: select length(‘jose’) from dual; WuTong数据库: select char_length(‘jose’) |
4 |
| lengthb(char) | octet_length(string) | int | 字符串中的字节数 | Oracle: select lengthb(‘jose’) from dual; WuTong数据库: select octet_length(‘jose’) |
4 |
| instr(string , substring) | position(substring in string) | int | 指定子字符串的位置 | Oracle: select instr(‘Thomas’,‘om’) from dual; WuTong数据库: select position(‘om’ in ‘Thomas’) |
3 |
| instr(string , substring) | strpos(string, substring) | int | 指定的子字符串的位置。和position(substring in string)一样,不过参数顺序相反。 | Oracle: select instr(‘Thomas’,‘om’) from dual; WuTong数据库: select strpos(‘Thomas’, ‘om’) |
3 |
| substr(string, position) | substring(string [from int][for int]) | text | 截取子字符串 | Oracle: select substr(‘Thomas’,2,3) from dual; WuTong数据库: select substring(‘Thomas’ from 2 for 3) |
hom |
| substr(string, position) | substring(string from pattern) | text | 截取匹配POSIX正则表达式的子字符串。 | Oracle: select substr(‘Thomas’,4,3) from dual; WuTong数据库: select substring(‘Thomas’ from ‘…$’) |
mas |
| replace(replace(varchar2,char,char),‘y’,’’) | btrim(string text [, characters text]) | text | 从string开头和结尾删除只包含 characters中字符(缺省是空白)的最长字符串。 | Oracle: select replace(replace(‘xyxtrimyyx’,‘x’,’’),‘y’,’’) from dual; WuTong数据库: select btrim(‘xyxtrimyyx’, ‘xy’) |
trim |
| chr(int) | chr(int) | text | 给定的ASCII码对应的字符 | Oracle:select chr(65) from dual; WuTong数据库: select chr(65) |
A |
| ascii(char) | ascii(string) | int | 给定字符对应的ASCII码值 | Oracle:select ascii(‘A’) from dual; WuTong数据库: select ascii(‘A’) |
65 |
| initcap(varchar2) | initcap(string) | text | 把每个单词的第一个字母转为大写,其它的保留小写。 单词是一系列字母数字组成的字符,用非字母数字分隔。 | Oracle: select initcap(‘hi THOMAS’) from dual; WuTong数据库: select initcap(‘hi THOMAS’) |
Hi Thomas |
| pg_client_encoding() | userenv() | name | 当前客户端编码名称 | Oracle: select userenv(‘language’) from dual; WuTong数据库: select pg_client_encoding(); |
Oracle:ZHS16GBK WuTong数据库:UTF8 |
| regexp_replace(varchar2, pattern, varchar2) | regexp_replace(string text, pattern text, replacement text [,flags text]) | text | 用POSIX正则表达式作为分隔符,分隔string。 | Oracle: select regexp_replace(‘Thomas’, ‘.[mN]a.’, ‘M’) from dual; WuTong数据库: select regexp_replace(‘Thomas’, ‘.[mN]a.’, ‘M’); |
ThM |
| translate(varchar2, from char, to char) | translate(string text, from text, to text) | text | 把在string中包含的任何匹配from 中字符的字符转化为对应的在to中的字符。 | Oracle: select translate(‘12345’, ‘14’, ‘ax’) from dual; WuTong数据库: select translate(‘12345’, ‘14’, ‘ax’) |
a23x5 |
| replace(varchar2,char,char) | replace(text,text,text) | text | 用于替换字符串的指定子串 | Oracle: select replace(‘123’,1,2) from dual; WuTong数据库: select replace(‘123’,1,2); |
223 |
| replace(varchar2,char,char) | overlay(string placing string from int [for int]) | text | 替换子字符串 | Oracle: select replace(‘Txxxxas’,‘xxxx’,‘hom’) from dual; WuTong数据库: select overlay(‘Txxxxas’ placing ‘hom’ from 2 for 4) |
Thomas |
| trim(varchar2) | trim(text) | text | 去除字符串的空格或指定字符 | Oracle: select trim(‘ aaa ’) from dual; WuTong数据库: select trim(‘ aaa ’); |
aaa |
| ltrim(varchar2) | ltrim(text) | text | 去除字符串左侧的空格或指定字符。 | Oracle: select ltrim(‘ bbb ’) from dual; WuTong数据库: select ltrim(‘ bbb ’); |
bbb |
| rtrim(varchar2) | rtrim(text) | text | 去除字符串右侧的空格或指定字符。 | Oracle: select ltrim(‘ ccc ’) from dual; WuTong数据库: select ltrim(‘ ccc ’); |
ccc |
| nvl(varchar2,varchar2) | nvl(text,text) | text | 如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值。 | Oracle: select nvl (null,0) from dual;; WuTong数据库: select nvl (null,0); |
0 |
| lower(varchar2) | lower(text) | text | 将字符串所有字母小写 | Oracle: select lower (‘ABC’) from dual; WuTong数据库: select lower (‘ABC’); |
abc |
| upper(varchar2) | upper(text) | text | 将字符串所有字母大写 | Oracle: select upper (‘abc’) from dual; WuTong数据库: select upper (‘abc ’); |
ABC |
| rpad(varchar2,int,varchar2) | rpad(text,int,text) | text | 在列的右边粘贴字符 | Oracle: select rpad(‘aa’,10,’’) from dual; WuTong数据库: select rpad(‘aa’,10,’’); |
aa******** |
| lpad(varchar2,int,varchar2) | lpad(text,int,text) | text | 在列的左边粘贴字符 | Oracle: select lpad(‘aa’,10,’’) from dual; WuTong数据库: select lpad(‘aa’,10,’’); |
********aa |
| concat(char,char) | concat(text,text) | text | 将多个字符串连接为一个字符串。 | Oracle: select concat('hello ',‘world !’) from dual ; WuTong数据库: select concat('hello ',‘world !’); |
hello world ! |
| greatest(expression1, expression2, …) | greatest(expression1, expression2, …) | text | 函数返回多个表达式中最大的值。 | Oracle: select greatest(5,6,7,8) from dual ; WuTong数据库: select greatest(5,6,7,8); |
8 |
| translate(varchar2,varchar2,varchar2) | translate(text,text,text) | text | 将字符串中的字符替换为另一个字符串中的对应字符。 | Oracle: select translate(‘abcd’,‘a’,‘1’) from dual ; WuTong数据库: select translate(‘abcd’,‘a’,‘1’); |
1bcd |
| nls_initcap(varchar2) | initcap(text) | text | 把每个单词的第一个字母转为大写,其它的保留小写。 | Oracle: select nls_initcap(‘HELLO World’) from dual; WuTong数据库: select nls_initcap(‘HELLO World’); |
Hello World |
| cast(expression1 as expression2) | cast(expression1 as expression2) | 和expression2类型一致 | 强转数据类型 | Oracle: SELECT CAST(‘20240912’ as int) FROM dual; WuTong数据库: SELECT CAST(‘20240912’ as int); |
20240912 |
| substrb(varchar2, varchar2, length) | substrb(string, start, length) | text | 类似于 substr,但处理的是字节字符串。(Oracle一个汉字是两个字节,梧桐一个汉字是三个字符) | Oracle: select substrb(‘我们是共产主义接班人’,1,5) from dual; WuTong数据库: select substrb(‘我们是共产主义接班人’,1,5); |
Oracle结果: 我们 WuTong数据库结果: 我 |
| TO_CLOB() | TEXT() | CLOB/TEXT | 将非CLOB值转为CLOB,WuTong数据库中用TEXT类型保存大文本数据,效果和Oracle的CLOB一样。 | Oracle: select to_clob(‘123’) from dual; WuTong数据库: select text(‘123’); |
123 |
| TO_CHAR (number) | TO_CHAR (numeric) | int | 返回计算后的数值 | Oracle: SELECT TO_CHAR(‘01110’ + 1) FROM dual; WuTong数据库: SELECT TO_CHAR(‘01110’ + 1) ; |
1111 |
2、数学函数和操作符
| Oracle函数 | 梧桐函数 | 返回类型 | 描述 | 例子 | 结果 |
|---|---|---|---|---|---|
| dbms_random.value | random () | dp | 生成两个之间的一个随机数。 | Oracle: select dbms_random.value(1, 2) from dual;; WuTong数据库: select random()*(2-1)+1; |
1.63333560250552 |
| round(number) | round (dp or numeric) | 与输入相同 | 四舍五入运算。 | Oracle: select round (42.4) from dual; WuTong数据库: select round (42.4) |
42 |
| round (r number, s int) | round (v numeric, s int) | 与输入相同 | 近似到小数点后s位 | Oracle: select round (42.432,2) from dual; WuTong数据库: select round (42.432,2) |
42.43 |
| trunc(number) | trunc (dp or numeric) | 与输入相同 | 截断向0接近 | Oracle: select trunc (42.8) from dual; WuTong数据库: select trunc (42.8); |
42 |
| trunc (v number, s int) | trunc (v numeric, s int) | 与输入相同 | 截断到小数点后s位 | Oracle: select trunc (42.4382, 2) from dual; WuTong数据库: select trunc (42.4382, 2); |
42.43 |
| abs(number) | abs(int) | int | 函数用于计算数字的绝对值。 | Oracle: select abs(-1) from dual; WuTong数据库: select abs(-1); |
1 |
| power(number,number) | power(int,int) | int | 函数用于计算数字的幂。 | Oracle: select power(2,3) from dual; WuTong数据库: select power(2,3); |
8 |
| mod(number,number) | mod(int,int) | int | 取模运算,返回两个数值相除的余数。 | Oracle: select mod(5,2) from dual; WuTong数据库: select mod(5,2); |
1 |
| ceil(number) | ceil(numeric) | int | 返回比输入值大的最小整数。 | Oracle: select ceil(1.22) from dual; WuTong数据库: select ceil(1.22); |
2 |
| floor(number) | floor(numeric) | int | 返回比输入值小的最大整数。 | Oracle: select floor(1.22) from dual; WuTong数据库: select floor(1.22); |
1 |
| ln(number) | ln(numeric) | numeric | 返回一个数字的对数值 | Oracle: select ln (2) from dual; WuTong数据库: select ln (2); |
0.693147180559945 |
| to_number(varchar2) | to_number(text) | numeric | 将给出的字符转换为数字 | Oracle: select to_number(‘1999’) from dual; WuTong数据库: select to_number(‘1999’); |
1999 |
| exp(number) | exp(numeric) | numeric | 返回一个数字e的n次方根 | Oracle: select exp(4) from dual; WuTong数据库: select exp(4); |
54.5981500331442 |
| sqrt(number) | sqrt(numeric) | numeric | 返回数字n的根 | Oracle: select sqrt (4) from dual; WuTong数据库: select sqrt (4); |
2 |
| acos(number) | acos(numeric) | numeric | 给出反余弦的值 | Oracle: select acos(-1) from dual; WuTong数据库: select acos(-1); |
3.14159265358979 |
| asin(number) | asin(numeric) | numeric | 给出反正弦的值 | Oracle:: select asin(0.5) from dual; WuTong数据库: select asin(0.5); |
0.523598775598299 |
| atan(number) | atan(numeric) | numeric | 返回一个数字的反正切值 | Oracle: select atan(1) from dual; WuTong数据库: select atan(1); |
0.785398163397448 |
| cos(number) | cos(numeric) | numeric | 返回一个给定数字的余弦 | Oracle: select cos(-3.1415927) from dual; WuTong数据库: select cos(-3.1415927); |
-0.999999999999999 |
| cosh(number) | cosh(numeric) | numeric | 返回一个数字反余弦值 | Oracle: select cosh(1) from dual; WuTong数据库: select cosh(1); |
1.54308063481524 |
| cot(number) | cot(numeric) | numeric | 返回一个数字反余弦值 | Oracle: select cot(1) from dual; WuTong数据库: select cot(1); |
0.6420926159343306 |
| sin(number) | sin(numeric) | numeric | 返回一个数字的正弦值 | Oracle: select sin (2) from dual; WuTong数据库: select sin (2); |
0.909297426825682 |
| tan(number) | tan(numeric) | numeric | 返回数字的正切值 | Oracle: select tan (2) from dual; WuTong数据库: select tan (2); |
-2.18503986326152 |
| tanh(number) | tanh(numeric) | numeric | 返回数字n的双曲正切值 | Oracle: select tanh (2) from dual; WuTong数据库: select tanh (2); |
0.964027580075817 |
| log (b number, x number) | log (b numeric, x numeric) | numeric | numeric 以b为底的对数 | Oracle: select log (2.0, 64.0) from dual; WuTong数据库: select log (2.0, 64.0) |
6 |
| atan2(number,number) | atan2(numeric,numeric) | numeric | 字符串中的字节数 | Oracle: select atan2(1,2) from dual; WuTong数据库: select atan2(1,2); |
0.463647609 |
| sinh(number) | atan2(numeric) | numeric | 字符串中的字节数 | Oracle: select sinh(1) from dual; WuTong数据库: select sinh(1); |
1.175201194 |
| nls_lower(varchar2) | lower(text) | numeric | 将字符串所有字母小写。 | Oracle: select nls_lower(‘HELLO World’) from dual; WuTong数据库: select nls_lower(‘HELLO World’); |
hello world |
| nls_upper(varchar2) | upper(text) | numeric | 将字符串所有字母大写。 | Oracle: select nls_upper(‘HELLO World’) from dual; WuTong数据库: select nls_upper(‘HELLO World’); |
HELLO WORLD |
| least(expression1,expression2…) | least(expression1,expression2…) | 和输入类型一致 | 取一组集合的最小值 | Oracle: SELECT LEAST(5,2,3) FROM DUAL; WuTong数据库: SELECT LEAST(5,2,3); |
2 |
| NANVL(number,number) | NANVL(numeric,numeric) | number/numeric | 为NaN提供一个默认值 | Oracle: select NANVL(BINARY_FLOAT_NAN,1) from dual; WuTong数据库: select NANVL(‘NaN’,1) ; |
1 |
| SIGN(number) | SIGN(numeric) | int | 为数学函数,确定一个数字的正负或零值 number < 0,返回 -1 number = 0,返回 0 number > 0,返回 1 number is NULL,返回 NULL |
Oracle: select sign(-8),sign(0),sign(8),sign(NULL) from dual; WuTong数据库: select sign(-8),sign(0),sign(8),sign(NULL);" | -1 | 0 | 1 | | |
|
| ROUND (number,number) | ROUND (numeric,numeric) | number | 用于将数字四舍五入到指定的小数位 | Oracle: select round(1.234,2) from dual; WuTong数据库: select round(1.234,2); |
1.23 |
3、格式化函数
| Oracle函数 | 梧桐函数 | 返回类型 | 描述 | 例子 | 结果 |
|---|---|---|---|---|---|
| to_char(123,‘xx’) | to_hex(‘123’) | text | 将一个十进制构成的字符串转换为十六进制 | Oracle: select to_char(123,‘xx’) from dual ; WuTong数据库: select to_hex(‘123’) ; |
|
| to_char(timestamp, varchar2) | to_char(timestamp, text) | text | 把时间戳转换成字符串 | Oracle: select to_char(sysdate, ‘HH12:MI:SS’) from dual; WuTong数据库: to_char(current_timestamp, ‘HH12:MI:SS’) |
10:32:08 |
| to_char(int) | to_char(int, text) | text | 把整数转换成字符串 | Oracle: select to_char(125) from dual; WuTong数据库: to_char(125, ‘999’) |
125 |
| to_char(double precision, char) | to_char(double precision, text) | text | 把实数/双精度数转换成字符串 | Oracle: select to_char(125.8, ‘999D9’) from dual; WuTong数据库: to_char(125.8::real, ‘999D9’) |
125.8 |
| to_char(number) | to_char(numeric, text) | text | 把数字转换成字符串 | Oracle: select to_char(-125.8) from dual; WuTong数据库: to_char(-125.8, ‘999D99S’) |
-125.8 |
| to_date(char, char) | to_date(text, text) | date | 把字符串转换成日期 | Oracle: select to_date(‘20240802’, ‘yyyymmdd’) from dual; WuTong数据库: select to_date(‘20240802’, ‘yyyymmdd’); |
2024-8-2 |
| to_timestamp(char, format) | to_timestamp(text, format) | date | 函数用于将字符串转换为时间戳。 | Oracle: select to_timestamp(to_char(sysdate,‘YYYYMMDDHHMISS’) ,‘YYYYMMDDHHMISS’) from dual ; WuTong数据库: select to_timestamp(to_char(now(),‘YYYYMMDDHHMISS’) ,‘YYYYMMDDHHMISS’) |
2024-09-13 02:43:02+08:00 |
4、日期/时间函数
| Oracle函数 | 梧桐函数 | 返回类型 | 描述 | 例子 | 结果 |
|---|---|---|---|---|---|
| trunc(sysdate) | current_date | date | 当前的日期;见当前日期/时间 | Oracle: select trunc(sysdate) from dual; WuTong数据库: select current_date; |
2024-9-10 |
| current_date | current_timestamp | timestamp with time zone | (当前事务开始时的)当前时间和日期;见?当前日期/时间。 | Oracle: select current_date from dual; WuTong数据库: select current_timestamp(); |
2024-9-10 11:15:07 |
| sysdate | current_timestamp | timestamp with time zone | (当前事务开始时的)当前时间和日期;见?当前日期/时间 | Oracle: select sysdate from dual; WuTong数据库: select radianscurrent_timestamp; |
2024-9-10 11:15:07 |
| add_months | add_months | date | 函数用于在日期上添加指定的月数。 | Oracle: select add_months(sysdate,3) from dual; WuTong数据库: select add_months(now(),3); |
2024-12-01 10:54:01 |
| months_between | months_between | int | 函数用于计算两个日期之间的月数。 | Oracle: select months_between(add_months(sysdate,3),sysdate) from dual; WuTong数据库: select months_between (add_months(now(),3),now()::date); |
3 |
| last_day | last_day | date | 返回日期的最后一天 | Oracle: select last_day(to_date(‘202407’,‘yyyy-mm’)) from dual ; WuTong数据库:: select last_day(to_date(‘202407’,‘yyyymm’)) ; |
2024-7-31 |
| next_day | next_day | date | 给出日期date和星期x之后计算下一个星期的日期 | Oracle: select next_day(sysdate,3) from dual ; WuTong数据库:: select next_day(now()::date,3); |
2024-9-17 10:57:39 |
| trunc(sysdate, ‘mm’) | trunc(now(), ‘mm’) | date | 当月第一天 | Oracle: select trunc(sysdate, ‘mm’) from dual; WuTong数据库: select trunc(now(), ‘mm’); |
2024-9-1 |
| trunc(sysdate,‘yy’) | trunc(now(),‘yy’) | date | 当年第一天 | Oracle: select trunc(sysdate,‘yy’) from dual ; WuTong数据库: select trunc(now(),‘yy’); |
2024-1-1 |
| trunc(sysdate,‘d’) | trunc(now(),‘d’) | date | 当前星期的第一天 | Oracle: select trunc(sysdate,‘d’) from dual ; WuTong数据库: select trunc(now(),‘d’); |
2024-9-8 |
| trunc(sysdate,‘IW’) | trunc(now(),‘IW’) | date | 当前星期的第一天 | Oracle: select trunc(sysdate,‘IW’) from dual; WuTong数据库: select trunc(now(),‘IW’); |
2024-9-9 |
| CURRENT_DATE | CURRENT_TIMESTAMP(0) | date | 返回当前会话时区中的当前时间 | Oracle: select CURRENT_DATE from dual; WuTong数据库: select CURRENT_TIMESTAMP(0); |
2024/9/14 15:43 |
| EXTRACT(field from datetime) | EXTRACT(field from datetime) | int | 用于从指定日期或时间中提取特定值,比如 年、月、日、小时等 | Oracle: select extract(month from current_date) from dual; WuTong数据库: select extract(month from CURRENT_TIMESTAMP(0)); |
9 |
| NEW_TIME(date,timezone1,timezone2) | timezone(timezone1,date AT TIME ZONE timezone2) | date | 将日期从指定时区转为另一个指定时区日期 | Oracle: select current_date,new_time(current_date,‘EST’,‘ADT’) from dual; WuTong数据库: select CURRENT_TIMESTAMP(0),timezone(‘EST’,CURRENT_TIMESTAMP(0) AT TIME ZONE ‘ADT’); |
| 2024-9-14 16:26:54 | 2024-9-14 18:26:54 | |
| SYSTIMESTAMP | now() | timestamp | 获取当前系统的时间戳,包含日期、时间、时区信息 | Oracle: select SYSTIMESTAMP from dual; WuTong数据库: select now(); |
2024-09-14 16:55:46.296478+08 |
| LOCALTIMESTAMP | LOCALTIMESTAMP | timestamp | 返回当前会话的日期和时间 | Oracle: SELECT LOCALTIMESTAMP FROM DUAL; WuTong数据库: SELECT LOCALTIMESTAMP ; |
Oracle: 2024-09-18 10:00:09.911962 WuTong数据库: 18-9月 -24 09.59.52.644082 上午 |
5、序列函数
| Oracle函数 | 梧桐函数 | 返回类型 | 描述 | 例子 | 结果 |
|---|---|---|---|---|---|
| nextval | nextval(regclass) | bigint | 递增序列并返回新值 | Oracle: select sequence.nextval from dual ; WuTong数据库: select nextval(‘sequence’); |
1 |
6、通用聚合函数
| Oracle函数 | 梧桐函数 | 返回类型 | 描述 | 例子 |
|---|---|---|---|---|
| count(expressio) | count(expressio) | int | 函数用来计算某个表或某个查询语句返回的结果集中的行数。 | Oracle: select count(1) from table1; WuTong数据库: select count(1) from table1 ; |
| sum(expressio) | sum(expressio) | int | 函数用来计算某个表或某个查询语句返回的结果集中某个列的数值之和。 | Oracle: select sum(coumn1) from table1; WuTong数据库: select sum(coumn1) from table1 ; |
| avg(expressio) | avg(expressio) | int | all表示对所有的值求平均值,distinct只对不同的值求平均值 | Oracle: select coumn2,avg(coumn1) from table1 group by coumn2; WuTong数据库: select coumn2,avg(coumn1) from table1 group by coumn2; |
| max(expressio) | max(expressio) | int | 用来计算某个表或某个查询语句返回的结果集中某个列的数值最大值 | Oracle: select max(coumn1) from table1; WuTong数据库: select max(coumn1) from table1 ; |
| min(expressio) | min(expressio) | int | 用来计算某个表或某个查询语句返回的结果集中某个列的数值最小值。 | Oracle: select min(coumn1) from table1; WuTong数据库: select min(coumn1) from table1 ; |
| rollup(expressio) | rollup(expressio) | int | 是GROUP BY子句的一种扩展,可以为每个分组返回小计记录以及为所有分组返回总计记录。 | Oracle: Select column1 ,count(1) from table1 group by rollup(column1); WuTong数据库: Select column1 ,count(1) from table1 group by rollup(column1); |
| cube(expressio) | cube(expressio) | int | 是GROUP BY子句的一种扩展,可以返回每一个列组合的小计记录,同时在末尾加上总计记录。 | Oracle: Select column1 ,count(1) from table1 group by cube(column1); WuTong数据库: Select column1 ,count(1) from table1 group by cube(column1); |
7、系统信息函数
| Oracle函数 | 梧桐函数 | 返回类型 | 描述 | 例子 |
|---|---|---|---|---|
| v$instance | current_database() | name | 当前数据库的名字 | Oracle: select instance_name from gv$instance; WuTong数据库: select current_database(); |
| user | current_schema() | name | 当前模式的名字 | Oracle: select user from dual; WuTong数据库: select current_schema(); |
| user | current_user() | name | 当前执行环境下的用户名 | Oracle: select user from dual; WuTong数据库: select current_user(); |
| user | user | name | 等价于 current_user | Oracle: select user from dual; WuTong数据库: select user(); |
| v$instance | version() | text | 数据库的版本信息 | Oracle: select version from v$instance; WuTong数据库: select version(); |
8、其他
| Oracle函数 | 梧桐函数 | 返回类型 | 描述 | 例子 | 结果 |
|---|---|---|---|---|---|
| minus | except | 集合 | 比较两个结果集的差异 | Oracle: select column from table1 minus select column from table2; WuTong数据库: select column from table1 except select column from table2; |
|
| regexp_like | regexp_like | 集合 | 通常进行模糊匹配,和用法like一样。 | Oracle: select * from masadw.tb_dic_area_code where regexp_like(area_code ,‘3[0-7][0-2]’); WuTong数据库: select * from masadw.tb_dic_area_code where regexp_like(area_code ,‘3[0-7][0-2]’); |
370 371 372 |
| regexp_instr | regexp_instr | int | 使用正则表达式来指定返回串的起点和终点。 | Oracle: select regexp_instr(‘Thomas’,‘om’) from dual; WuTong数据库: select regexp_instr(‘Thomas’,‘om’); |
3 |
| rownum | limit | 集合 | 用法1: 限制查询结果集展示条数 |
Oracle: select * from table1 where rownum < 2; WuTong数据库: select * from table1 limit 2; |
|
| rownum | row_number() over() | int | 用法2: 生成行号。 |
Oracle: select rownum from table1; WuTong数据库: select row_number() over() from table1; |
|
| nullif(int,int) | nullif(int,int) | int | 值相等返空,否则返回第一个值。 | Oracle: select nullif(1,2) from dual; WuTong数据库: select nullif(1,2); |
1 |
| coalesce(expression,expression,expression) | coalesce(expression,expression,expression) | int | 返回列表中第一个非空表达式。 | Oracle: select coalesce(null,2,210) from dual; WuTong数据库: select coalesce(null,2,210); |
2 |
| nvl2(varchar2,varchar2,varchar2) | nvl2(text,text,text) | text | 如果参数1不为空,显示参数2,否则显示参数3。 | Oracle: select nvl2(null,‘1’,‘2’) from dual; WuTong数据库: select nvl2(null,‘1’,‘2’); |
2 |
| regexp_substr | regexp_split_to_array | text | 匹配字符。 | Oracle: select regexp_substr(‘122136’,‘22’) from dual; WuTong数据库: select (regexp_split_to_array(‘122136’,’[^0-9]+’))[22]; |
|
| merge into | update& insert | boolean | 批量更新或插入数据。 | Oracle: merge into t1 using (select id,name from t2) t2 on ( t1.id=t2.id) when matched then update set t1.name= t2.name when not matched then insert (id,name) values (t2.id,t2.name); WuTong数据库: update t1 set name= t2.name from t2 where t1.id=t2.id; insert into t1 select t2.id,t2.name from t2 left join t1 on t1.id=t2.id where t1.id is null; |
|
| DECODE(exp,value1,result1,value2,result2,…,default) | DECODE(exp,value1,result1,value2,result2,…,default) | 根据一系列条件返回不同的结果,如果条件都不满足,返回default值。 | Oracle: select DECODE(1+2,3,‘c’,4,‘d’,‘e’),DECODE(1+4,3,‘c’,4,‘d’,‘e’) from dual; WuTong数据库: select DECODE(1+2,3,‘c’,4,‘d’,‘e’),DECODE(1+4,3,‘c’,4,‘d’,‘e’); |
| c | e | | |
| ORA_HASH() | hashtext() | 哈希值 | 计算给定表达式的哈希值 | Oracle: select ora_hash(‘hello’) from dual; WuTong数据库: select hashtext(‘hello’); " |
每个数据库函数计算哈希值方式不同,返回值不同。 |
| WIDTH_BUCKET(expr,min_value,max_value,num_buckect) | WIDTH_BUCKET(expr,min_value,max_value,num_buckect) | int | 取值是否在分组范围内,小于分组范围返回0 | Oracle: select width_bucket(100, 100, 500, 5) FROM DUAL; select width_bucket(200, 100, 500, 5) FROM DUAL; select width_bucket(300, 100, 500, 5) FROM DUAL; WuTong数据库: select width_bucket(100, 100, 500, 5) ; select width_bucket(200, 100, 500, 5) ; select width_bucket(300, 100, 500, 5) ; |
1 2 3 |
9、元数据
| ORACLE元数据 | 梧桐函数元数据 | 元数据作用 |
|---|---|---|
| all_tables | pg_tables | 查询所有的表 |
| dba_users | pg_user | 查询所有用户 |
| dba_views | pg_views | 查询数据库所有视图 |
| dba_roles | pg_roles | 查询数据库所有角色 |
| all_tab_partitions | 无 | 查询所有分区 |
| gv$sessions | pg_stat_activity_global | 查询数据库当前所有会话 |
| all_tab_columns | dba_tab_columns | 查询所有表字段及来字段类型 |
最后修改时间:2024-11-26 09:46:09
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




