其他函数
bitand(number1,number2)
返回number1和number2按位与的值,返回值为BIT类型。
atlasdb=# select bitand(11,2); bitand -------- 2 (1 row)
empty_blob()
返回一个空BLOB类型。
atlasdb=# select empty_blob() ; empty_blob ------------ (1 row)
lnnvl(condition)
返回条件表达式condition的取反值,返回类型为BOOLEAN。
atlasdb=# select lnnvl(1=1); lnnvl ------- f (1 row)
sys_guid()
返回RAW类型的全局唯一标识。
atlasdb=# select sys_guid(); sys_guid -------------------------------------- 8725c3ed-1c2c-48b7-84e5-add2d25ef78f (1 row)
REGEXP_COUNT(source_char, pattern [, position [, match_param]])
REGEXP_COUNT 返回pattern 在source_char串中出现的次数。如果未找到匹配,则函数返回0。
match_param 变量支持下面几个值:
'i' 用于不区分大小写的匹配
'c' 用于区分大小写的匹配
'n' 允许句点(.)作为通配符去匹配换行符。如果省略该参数,则句点将不匹配换行符
'm' 将源串视为多行。即Oracle 将^和$分别看作源串中任意位置任何行的开始和结束,而不是仅仅看作整个源串的开始或结束。如果省略该参数,则Oracle将源串看作一行。
'x' 忽略空格字符。默认情况下,空格字符与自身相匹配。
atlasdb=# select REGEXP_COUNT('GEORGE','GE',1,'i') from DUAL; regexp_count -------------- 2 (1 row)
CAST(element as data_type)
CAST将特定数据类型或集合类型的值转换为另一种数据类型或集合类型的值。
atlasdb=# select cast('123' AS VARCHAR2(3)); varchar2 ---------- 123 (1 row)
COALESCE
COALESCE返回表达式列表中的第一个非空表达式。
atlasdb=# select COALESCE (null,'',3) from dual; coalesce ---------- 3 (1 row)
DECODE
DECODE将expr与每个搜索值一一比较。如果expr等于搜索值,则数据库返回相应的结果。如果找不到匹配项,则返回默认值。支持所有数据类型。
atlasdb=# select DECODE (2, 1, 'Southlake', atlasdb(# 2, 'San Francisco', atlasdb(# 3, 'New Jersey', atlasdb(# 4, 'Seattle', atlasdb(# 'Non domestic') "Locati"; Locati --------------- San Francisco (1 row)
REGEXP_REPLACE(source_str,look_str,replace_string)
REGEXP_REPLACE在字符串中搜索正则表达式模式,并替换为replace_string。
atlasdb=# SELECT REPLACE('Joe Smith',' ', 'hahah') ; replace --------------- JoehahahSmith (1 row)
replace
replace将出现search_string并替换为replace_string的情况下返回char。
atlasdb=# SELECT REPLACE(123123123,'1','123213') "Changes"; Changes -------------------------- 123213231232132312321323 (1 row)
sys_connect_by_path
SYS_CONNECT_BY_PATH仅在分层查询中有效。它返回从根到节点的列值的路径,对于CONNECT BY条件返回的每一行,列值用char分隔。
atlasdb=# CREATE TABLE sys_cbp_test2 (id INTEGER NOT NULL PRIMARY KEY,parent_id INTEGER ); CREATE TABLE atlasdb=# INSERT INTO sys_cbp_test2 atlasdb-# SELECT 1, NULL FROM dual atlasdb-# UNION ALL SELECT 2, 1 FROM dual atlasdb-# UNION ALL SELECT 3, 2 FROM dual atlasdb-# UNION ALL SELECT 4, 3 FROM dual atlasdb-# UNION ALL SELECT 5, 1 FROM dual atlasdb-# UNION ALL SELECT 6, 5 FROM dual atlasdb-# UNION ALL SELECT 7, 2 FROM dual atlasdb-# UNION ALL SELECT 20, NULL FROM dual atlasdb-# UNION ALL SELECT 21, 20 FROM dual atlasdb-# UNION ALL SELECT 22, 21 FROM dual; INSERT 0 10 atlasdb=# SELECT id, parent_id, Level a, atlasdb-# sys_connect_by_path (TO_CHAR (id), '/') AS Path atlasdb-# FROM sys_cbp_test2 atlasdb-# START WITH parent_id IS NULL CONNECT BY prior id = parent_id; id | parent_id | a | path ----+-----------+---+----------- 1 | | 1 | /1 20 | | 1 | /20 2 | 1 | 2 | /1/2 5 | 1 | 2 | /1/5 21 | 20 | 2 | /20/21 3 | 2 | 3 | /1/2/3 6 | 5 | 3 | /1/5/6 7 | 2 | 3 | /1/2/7 22 | 21 | 3 | /20/21/22 4 | 3 | 4 | /1/2/3/4 (10 rows)