/* 字符串相关函数 */
DECLARE
V_TO_DAY VARCHAR2(50);
V_TO_NUM NUMBER;
BEGIN
V_TO_DAY := TO_CHAR(SYSDATE, 'yyyy.mm.dd hh24:mi:ss') ;
DBMS_OUTPUT.PUT_LINE('TO_CHAR:'||V_TO_DAY);
V_TO_NUM := TO_NUMBER('9999');
DBMS_OUTPUT.PUT_LINE('TO_NUMBER:'||V_TO_NUM);
--拼接字符串
DBMS_OUTPUT.PUT_LINE('CONCAT:'||CONCAT('This is a',' computer'));
--获取字符串占用字符数值大小
DBMS_OUTPUT.PUT_LINE('LENGTH:'||LENGTH('我们是中国人'));
--转换小写
DBMS_OUTPUT.PUT_LINE('LOWER:'||LOWER('WO MEN SHI ZHONG GUO REN'));
--转换大写
DBMS_OUTPUT.PUT_LINE('UPPER:'||UPPER('wo men shi zhong guo ren'));
--字符串截取
DBMS_OUTPUT.PUT_LINE('SUBSTR:'||SUBSTR('WO MEN SHI ZHONG GUO REN',4,6));
--替换指定字符内容
DBMS_OUTPUT.PUT_LINE('REPLACE:'||REPLACE('邪神','邪神','皇阿玛'));
END;
/* 数值相关函数 */
DECLARE
BEGIN
--取绝对值
DBMS_OUTPUT.PUT_LINE('ABS:'||ABS(-1));
--求模
DBMS_OUTPUT.PUT_LINE('MOD:'||MOD(5,2));
--指定number后面的小数位长度
DBMS_OUTPUT.PUT_LINE('ROUND:'||ROUND('1001.1124567',2));
--判断数值类型,负数为-1,正数为1,0为0
DBMS_OUTPUT.PUT_LINE('SIGN:'||SIGN(-99.9));
DBMS_OUTPUT.PUT_LINE('SIGN:'||SIGN(99.9));
DBMS_OUTPUT.PUT_LINE('SIGN:'||SIGN(0.0));
END;
/* 单行函数 */
DECLARE
BEGIN
--该函数返回列表中项的最大值.对数值或日期来说,返回值是最大值或最晚日期,
--如果列表中包含字符串,返回值是按字母顺序列表中的最后一项.
SELECT GREATEST(123,234,432,112) FROM DUAL;
SELECT GREATEST('w','a') FROM DUAL;
SELECT GREATEST(sysdate,sysdate-10) FROM DUAL;
--该函数返回列表中项的最小值.对数值或日期来说,返回值是最小值或最早日期,
--如果列表中包含字符串,返回值是按字母顺序列表中的第一项.
SELECT LEAST(123,234,432,112) FROM DUAL;
SELECT LEAST('w','a') FROM DUAL;
SELECT LEAST(sysdate,sysdate-10) FROM DUAL;
--如果表达式不为空值,函数返回该表达式的值,如果是空值,就返回用来替换的值.
SELECT NVL(TO_CHAR('123'),'NOT APPLICABLE') AS NVL FROM DUAL;
SELECT NVL(NULL,'NOT APPLICABLE') AS NVL FROM DUAL;
END;
/* 多行函数 */
DECLARE
BEGIN
--对查询返回的数据行求平均值
SELECT AVG(ET.EID) AS ENAME FROM EAB_TEST ET;
--计算有效行的个数
SELECT COUNT(ET.EID) AS ENAME FROM EAB_TEST ET;
--对查询返回的行集求最大值.如果有多个最大值,将所有均返回
SELECT MAX(ET.EID) AS ENAME FROM EAB_TEST ET;
--对查询返回的行集求最小值.如果有多个最小值,将所有均返回.
SELECT MIN(ET.EID) AS ENAME FROM EAB_TEST ET;
--计算查询返回的所有非空数值的总和.如果返回的数据都是空值,则该函数也返回空值.
SELECT SUM(ET.EID) AS ENAME FROM EAB_TEST ET;
--该函数计算返回所有行的统计方差.
SELECT VARIANCE(ET.EID) AS ENAME FROM EAB_TEST ET;
END