博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CHIL-ORACLE-函数
阅读量:6036 次
发布时间:2019-06-20

本文共 19086 字,大约阅读时间需要 63 分钟。

创建函数的的语法:create [or replace] function function_name [(param1,param2)]  --函数名、参数return param_type     is|as   --返回值类型[local declarations]   --变量声明begin    executable statements;    return result;  --返回值   exception    exception handlers;end function_name9.1.TO_CHAR       将一个数值转换成与之等价的字符串.如果不指定格式,将转换成最简单的字符串形式.如果为负数就在前面加一个减号. 9.1.1.TO_CHAR(number[,format])         Oracle为数值提供了很多格式,下表列出了部分可接受的格式: 元素              描述                   示例      值           结果  9 返回指定位数的数值,前面为0,显示为空格 99999     784       ‘   784’ 9 返回指定位数的数值,前面为0,显示为空格 99999      -578      ‘  -578’ 9 返回指定位数的数值,前面为0,显示为空格 99999     1234567   ‘######’ 9 返回指定位数的数值,前面为0,显示为空格 99999     45.895    ‘  46’ 9 插入小数点                           9999.99   784         ‘784.00’ 9 插入小数点                           9999.99   45.3482     ’45.35’ 9  在结果串的指定位置插入逗号            9,999,999  784       ‘   784’ 9  在结果串的指定位置插入逗号            9,999,999  1234567   ‘1,234,567’ 9  在结果串的指定位置插入逗号            9,999,999  0.44     ‘      0’   $ 返回值前面加一个元符号               $99,999    784        ‘$784’ $ 返回值前面加一个元符号               $99,999   -578        ‘-$578’   B 结果的整数部分如果是0,就显示成空格   B9999.9    784         ‘  784.0’ B 结果的整数部分如果是0,就显示成空格   B9999.9    0.44       ‘    .4’ S  返回 有正负号的数值                  S9999       784          ‘+784’  EEEE 以科 计数法表示数值             9.9EEEE    45           ‘  4.5E+01’ EEEE 以科 计数法表示数值             9.9EEEE    0.0666     ‘  6.7E-02’ 9.1.2.TO_CHAR(date[,format]) 用途:      将按format参数指定的格式将日期值转换成相应的字符串形式.同样,Oracle提供许多的格式模型,    用户可以用它们的组合来表示最终的输出格式.唯一限制就是最终的掩码不能超过22个字符. 格式          意义  D      用数字表示星期几(1,2,3,4,5,6,7)  DY     用三个字符表示星期几的缩写形式(MON)  DAY    星期几的完整表示(MONDAY)  DD     用数字表示一月中的几号  DDD    用数字表示年份中的天数  W      一月中的星期数  WW     一年中的星期数  MM     用数字表示月数  MON     用三个字母表示月的缩写(APR)  MONTH  月的完整英文表示(FEBRUARY)  Y      年份中的最后一个数字(9)  YY     年份中的最后二个数字(99)  YYY    年份中的最后三个数字(999)  YYYY   年份用四个数字表示(1999)  YEAR   年份的字母全部拼写(NINETEEN-NINETY-NINE)  AM或PM 午前或午后表示符  HH     用小时表示日期  MI     分钟表示小时  SS     秒钟表示分钟  SSSS   自午夜以来的秒数(这个数字经常在0-86399之间)    9.1.3. TO_DATE(string,format)   用途:        根据给定的格式将一个字符串转换成Oracle的日期值.        该函数的主要用途是用来验证输入的日期值.在应用程序中,      用户必须验证输入日期是否有效,如月份是否在1~12之间和日期中的天数是否在指定月份的天数内. 9.2. TO_NUMBER(string[,format])     用途:        该函数将一个字符串转换成相应的数值.对于简单的字符串转换数值(例如几位数字加上小数点).格式是可选的.9.3. ADD_MONTHS(date,number)    用途:       在日期date上加指定的月数,返回一个新日期.如果给定为负数,返回值为日期date之前几个月的日期.number应当是个整数,如果是小数,      正数被截为小于该数的最大整数,负数被截为大于该数的最小整数.   --例如:    SELECT TO_CHAR(ADD_MONTHS(sysdate,1),'DD-MON-YYYY') "Next month";        FROM dual                  Next month         -----------         19-FEB-20009.4. LAST_DAY(date)     用途: 返回日期date所在月份的最后一天的日期.      --例如:     SELECT SYSDATE, LAST_DAY(SYSDATE) "Last",LAST_DAY(SYSDATE) - SYSDATE "Days Left"         FROM DUAL          SYSDATE   Last    Days Left         --------- --------- ----------         19-JAN-00 31-JAN-00   12 9.5. MONTHS_BETWEEN(date1,date2)      用途:返回两个日期之间的月份.如果两个日期月份内的天数相同(或者都是某个月的最后一天),返回值是整数.否则,返回值是小数,         每于1/31月来计算月中剩余天数.如果第二个日期比第一个日期还早,则返回值是负数.      --例如:     SELECT MONTHS_BETWEEN(TO_DATE('02-02-1992', 'MM-DD-YYYY'),                       TO_DATE('01-01-1992', 'MM-DD-YYYY'))     "Months"     FROM DUAL                 Months            ----------            1.03225806    --例如:       SELECT MONTHS_BETWEEN(TO_DATE('02-29-1992', 'MM-DD-YYYY'),                         TO_DATE('01-31-1992', 'MM-DD-YYYY'))     "Months"     FROM DUAL             Months        ----------                 19.6.NEXT_DAY(date,day)   用途:该函数返回日期date指定若天后的日期.注意:参数day必须为星期,可以星期几的英文完整拼写,或前三个字母缩写,或数字1,2,3,4,5,6,7分别表示星期日到星期六.例如,查询返回本月最后一个星期五的日期.     --例如:    SELECT NEXT_DAY((last_day(sysdate)-7),'FRIDAY')      FROM dual              NEXT_DAY(       ---------       28-JAN-009.7. NEXT_DAY(date[,format])        用途:该函数把一个日期四舍五入到最接近格式元素指定的形式.如果省略format,只返回date的日期部分.         --例如,如果想把时间(24/01/00 14:58:41)四舍五入到最近的小时.下表显示了所有可用格式元素对日期的影响.        Format Element Result       SS 24/01/00 14:58:41       MI 24/01/00 14:59:00       HH 24/01/00 15:00:00       DD 25/01/00 00:00:00       MM 01/02/01 00:00:00       YY 01/01/00 00:00:00       CC 01/01/00 00:00:00     --例如:     SELECT to_char(ROUND(sysdate,'HH'),'DD-MON-YY HH24:MI:SS')    FROM dual          TO_CHAR(ROUND(SYSDATE,'HH'),'DD-MON-YYHH24:MI:SS')         -----------------------------------------------------------------         24-JAN-00 15:00:00 9.8. TRUNC(date[,format])      用途:TRUNC函数与ROUND很相似,它根据指定的格式掩码元素,只返回输入日期用户所关心的那部分,与ROUND有所不同,它删除更精确的时间部分,而不是将其四舍五入.          --例如:     SELECT TRUNC(sysdate)    FROM dual         TRUNC(SYS         ---------         24-JAN-00  9.9. FLOOR 求两个日期之间的天数用;         select floor(sysdate - to_date('20080805','yyyymmdd')) from dual;  9.10. ASCII(character)      用途:返回指定字符的ASCII码值.如果为字符串时,返回第一个字符的ASCII码值.      --例如:    SELECT ASCII('Z')   FROM dual        ASCII('Z')       ----------               90   9.11. CHR(number)      用途:该函数执行ASCII函数的反操作,返回其ASCII码值等于数值number的字符.该函数通常用于向字符串中添加不可打印字符.      --例如:     SELECT CHR(65)||'BCDEF'               FROM dual        CHR(65         ------         ABCDEF           9.12. CONCAT(string1,string2)      用途:该函数用于连接两个字符串,将string2跟在string1后面返回,它等价于连接操作符(||).      --例如:     SELECT CONCAT(‘This is a’,’ computer’)               FROM dual          CONCAT('THISISA',         ------------------         This is a computer                 它也可以写成这样:     SELECT ‘This is a’||’computer’               FROM dual                  'THISISA'||'COMPUT'         ------------------         This is a computer         这两个语句的结果是完全相同的,但应尽可能地使用||操作符.   9.13. INITCAP(string)       用途:该函数将字符串string中每个单词的第1个字母变成大写字母,其它字符为小写字母.     --例如:     SELECT INITCAP(first_name||'.'||last_name)               FROM employee              WHERE department_id=12                           INITCAP(FIRST_NAME||'.'||LAST_N         -------------------------------         Chris.Alberts Matthew.Fisher Grace.Roberts Michael.Douglas    9.14. INSTR(input_string,search_string[,n[,m]])      用途:该函数是从字符串input_string的第n个字符开始查找搜索字符串的第m次出现,如果没有找到搜索的字符串,函数将返回0.如果找到,函数将返回位置.      --例如:     SELECT INSTR('the quick sly fox jumped over the lazy brown dog','the',2,1)       FROM dual          INSTR('THEQUICKSLYFOXJUMPEDOVERTHELAZYBROWNDOG','THE',2,1)         ---------------------------------------------------------- 9.15. INSTRB(input_string,search_string[,n[,m]])      用途:该函数类似于INSTR函数,不同之处在于INSTRB函数返回搜索字符串出现的字节数,而不是字符数.在NLS字符集中仅包含单字符时,         INSTRB函数和INSTR函数是完全相同的.    9.16. LENGTH(string)      用途:该函数用于返回输入字符串的字符数.返回的长度并非字段所定义的长度,而只是字段中占满字符的部分.    以列实例中,字段first_name定义为varchar2(15).      --语法:     SELECT first_name,LENGTH(first_name)              FROM employee                FIRST_NAME       LENGTH(FIRST_NAME)        --------------- ------------------        JOHN           4        KEVIN          5  9.17. LENGTHB(string)      用途:该函数用于返回输入字符串的字节数.对于只包含单字节字符的字符集来说LENGTHB函数和LENGTH函数完全一样.    9.18. LOWER(string)      用途:该函数将字符串string全部转换为小写字母,对于数字和其它非字母字符,不执行任何转换.   9.19. UPPER(string)      用途: 该函数将字符串string全部转换为大写字母,对于数字和其它非字母字符,不执行任何转换.    9.20. LPAD(string,length[,’set’])      用途:在字符串string的左边加上一个指定的字符集set,从而使串的长度达到指定的长度length.参数set可以是单个字符,也可以是字符串.如果string的长度小于length时,取string字符串的前length个字符.          --例如:     SELECT first_name,LPAD(first_name,20,' ')               FROM employee         FIRST_NAME      LPAD(FIRST_NAME,20,'')         --------------- -----------------------------------------         JOHN                            JOHN         KEVIN                          KEVIN          9.21. RPAD(string,length[,’set’])      用途:在字符串string的右边加上一个指定的字符集set,从而使串的长度达到指定的长度length.参数set可以是单个字符,也可以是字符串.如果string的长度小于length时,取string字符串的前length个字符.      --例如:     SELECT first_name,rpad(first_name,20,'-')               FROM employee          FIRST_NAME      RPAD(FIRST_NAME,20,'-')         --------------- -----------------------------------------         JOHN            JOHN----------------         KEVIN           KEVIN---------------    9.22. LTRIM(string[,’set’])      用途:该函数从字符串的左边开始,去掉字符串set中的字符,直到看到第一个不在字符串set中的字符为止.      --例如:     SELECT first_name,ltrim(first_name,'BA')               FROM employee     WHERE first_name='BARBARA'        FIRST_NAME      LTRIM(FIRST_NAM         --------------- ---------------         BARBARA         RBARA  9.23. RTRIM(string[,’set’])      用途:该函数从字符串的右边开始,去掉字符串set中的字符,直到看到第一个不在字符串set中的字符为止.具有NULL值的字段不能与具有空白字符的字段相比较.          这是因为空白字符与NULL字符是完全不同的两种字符.该函数的另外一个用途是当进行字段连接时去掉不需要的字符.  9.24. SUBSTR(string,start[,length])      用途:该函数从输入字符串中取出一个子串,从start字符处开始取指定长度的字符串,如果不指定长度,返回从start字符处开始至字符串的末尾.  9.25. REPLACE(string,search_set[,replace_set])      用途:该函数将字符串中所有出现的search_set都替换成replace_set字符串.可以使用该函将字符串中所有出现的符号都替换成某个有效的名字.如果不指定replace_set,则将从字符串string中删除所有的搜索字符串search_set.      --例如:        SELECT REPLACE('abcdefbdcdabc,dsssdcdrd','abc','ABC') FROM dual        REPLACE('ABCDEFBDCDABC',        -----------------------        ABCdefbdcdABC,dsssdcdrd    9.26. TRANSLATE(string,search_set,replace_set)      用途:该函数用于将所有出现在搜索字符集search_set中的字符转换成替换字符集replace_set中的相应字符.注意:如果字符串string中的某个字符没有出现在搜索字符集中.则它将原封不动地返回.如果替换字符集replace_set比搜索字符集search_set小,那么搜索字符集search_set中后面的字符串将从字符串string中删除.      --例如:     SELECT TRANSLATE('GYK-87M','0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',9999999999xxxxxxxxxxxxxx)       FROM dual          TRANSL     ------     xx-99x      9.27. ABS(number)      用途:该函数返回数值number的绝对值.绝对值就是一个数去掉符号的那部分.   9.28. SQRT(number)    用途:该函数返回数值number的帄方根,输入值必须大于等于0,否则返回错误.   9.29. CEIL(number)      用途:该函数返回大于等于输入值的下一个整数.    9.30. FLOOR(number)      用途:该函数返回小于等于number的最大整数.9.31. MOD(n,m)      用途:该函数返回n除m的模,结果是n除m的剩余部分.m,n可以是小数,负数.   9.32. POWER(x,y)      用途:该函数执行LOG函数的反操作,返回x的y次方.   9.33. ROUND(number,decimal_digits)      用途:该函数将数值number四舍五入到指定的小数位.如果decimal_digits为0,则返回整数.decimal_digits可以为负数.  9.34. TRUNC(number[,decimal_pluces])      用途:该函数在指定的小数字上把一个数值截掉.如果不指定精度,函数预设精度为0. decimal_pluces可以为负数.9.35. SIGN(number)        用途:该函数返回number的符号,如果number为正数则返回1,为负数则返回-1,为0则返回0.     9.36. SIN(number)        用途:该函数返回弧度number的正弦值.   9.37. SINH(number)        用途:该函数返回number的返正弦值.    9.38. COS(number)        用途:该函数返回弧度number的三角余弦值.要用角度计算余弦,可以将输入值乘以0.01745转换成弧度后再计算.  9.39. COSH(number)        用途:该函数返回输入值的反余弦值.   9.40. TAN(number)        用途:该函数返回弧度number的正切值.   9.41. TANH(number)        用途:该函数返回数值number的反正切值.    9.42. LN(number)        用途:该函数返回number自然对数.  9.43. EXP(number)        用途:该函数返回e(2.71828183)的number次方.该函数执行自然对数的反过程.   9.44. LOG(base,number)        用途:该函数返回base为底,输入值number的对数. 单行函数: 单行函数中可以对任何数据类型的数据进行操作.  9.45. DUMP(expression[,format[,start[,length]]])        用途:该函数按指定的格式显示输入数据的内部表示.下表列出了有效的格式.      格式代码   描述       8        八进制       10       十进制       16       十六进制       17       单字符      --例如:     SELECT DUMP('FARRELL',16)           FROM dual        DUMP('FARRELL',16)       ----------------------------------       Typ=96 Len=7: 46,41,52,52,45,4c,4c 9.46. GREATEST(list of values)        用途:该函数返回列表中项的最大值.对数值或日期来说,返回值是最大值或最晚日期,如果列表中包含字符串,返回值是按字母顺序列表中的最后一项.              --例如:     SELECT GREATEST(123,234,432,112)               FROM dual                  GREATEST(123,234,432,112)         -------------------------                       9.47. LEAST(list of values)        用途:该函数返回列表中项的最小值.对数值或日期来说,返回值是最小值或最早日期,如果列表中包含字符串,返回值是按字母顺序列表中的第一项.        --例如:     SELECT LEAST(sysdate,sysdate-10)               FROM dual                  LEAST(SYS         ---------         10-JAN-00  9.48 NVL(expression,replacement_value)        用途:如果表达式不为空值,函数返回该表达式的值,如果是空值,就返回用来替换的值.        --例如:     SELECT last_name,      NVL(TO_CHAR(COMMISSION),'NOT APPLICABLE')               FROM employee              WHERE department_id=30         LAST_NAME          NVL(TO_CHAR(COMMISSION),'NOTAPPLICABLE')         --------------- ----------------------------------------         ALLEN           300         WARD            500         MARTIN          1400         BLAKE           NOT APPLICABLE          多行函数 组函数可以对表达式的所有值操作,也可以只对其中不同值进行操作,组函数的语法如下所示: 9.49. function[DISTINCT|ALL expression]       如果既不指定DISTINCT,也不指定ALL,函数将对查询返回的所有数据行进行操作.不能在同一个SELECT语句的选择列中同时使用组函数和单行函数.   9.50. AVG([DISTINCT|ALL] expression)       用途:对查询返回的数据行求帄均值.        --例如:     SELECT AVG(sal) "Average"               FROM emp                       Average             ----------             2073.21429           9.51. COUNT([DISTINCT|ALL] expression)      用途:计算表达式的个数.要计算EMP表中雇员的个数.       --例如:     SELECT COUNT(deptno)              FROM emp               COUNT(DEPTNO)        -------------                   14            SELECT COUNT(distinct deptno)              FROM emp                COUNT(DISTINCTDEPTNO)        ---------------------                     9.52. MAX([DISTINCT|ALL] expression)        用途:对查询返回的行集求最大值.如果有多个最大值,将所有均返回.要检索公司中最高工资的雇员.  语法:     SELECT ename,sal               FROM emp     WHERE sal=(select max(sal) FROM emp)          ENAME          SAL         ----------       ---------         KING          5000   9.53. MIN([DISTINCT|ALL] expression)       用途:对查询返回的行集求最小值.如果有多个最小值,将所有均返回.        --例如:     SELECT MIN(last_name)               FROM employee          MIN(LAST_NAME)         ---------------         ADAMS     9.54. SUM([DISTINCT|ALL] expression)        用途:计算查询返回的所有非空数值的总和.如果返回的数据都是空值,则该函数也返回空值.        --例如:     SELECT SUM(salary)"Total"               FROM employee              WHERE department_id=10              Total         ---------              8750          9.55. VARIANCE([DISTINCT|ALL] expression)        用途:该函数计算返回所有行的统计方差.      --例如:     SELECT VARIANCE(salary)               FROM employee                  VARIANCE(SALARY)         ----------------                973659.27字符函数:数据库字符集与X等价数值 :Chr(x) 相反函数:ASCIIselect Chr('65') from dual;select ASCII('A') from dual;连接字符串:concat(string 1,string2) 常用||替代select concat('123','456') from dual;select '123'||'456'||'789' from dual去空格:  trim(string)\LTRIM\RTRIM select length(trim(' 12 123 ')) from dual;select length(LTRIM(' 12 123 ')) from dual;select LTRIM(' 12 123 ') from dual;select RTRIM(' 12 123 ') from dual;大小写转换 UPPER 和 LOWERselect UPPER('aaa')  from dual;select LOWER('AAA')  from dual;首字母大写:INITCAP(enam)\NLS_INICAP 只有首字母大写select INITCAP('NLS_INICAP') from dual; 字符串截取:substr()--select 'ABCDEFG',substr('ABCDEFG',2,3) from dual--SELECT 'ABCDEFG',SUBSTR('ABCDEFG',-3,3) FROM DUAL;字符串长度:length()select length('1234567') from dual;内容替换:replace()select replace('ASDFF','ASD','F')from dual;内容比较替换:TRANSLATE(string ,string1,string2)select TRANSLATE('ASDFGHJKL','ASDFGH','q') from dual;-------------分析函数  over max(personincome) over(partition by earnmonth,area) 最高值                    Min(personincome) over(partition by earnmonth,area) 最低值avg(personincome)           over(partition by earnmonth,area) 平均值sum(personincome)           over(partition by earnmonth,area) 总额aLL表示对所有,distinct表示对不同的值求最大值,相同的只取一次常用的聚合函数 AVG,MAX,MIN,COUNT,SUMselect  from dual;select  a.empsalary,mod(empsalary,5) from emp a;select * from emp ;select ('13500.00'+'20060.00')/2 from dual;--16780SUM(DISTINCT|ALL column) 求和AVG(DISTINCT|ALL  column) 平均MAX(DISTINCT|ALL column) 最大MIN(DISTINCT|ALL column) 最小COUNT(DISTINCT|ALL  column) 统计   count(*)和count(1)MEDIAN  求中位数VARIANCE(DISTINCT|ALL  column) 方差 STDDEV(distinct|all column) 标准差-------------四舍五入:ROUND()2、截断小数位:TRUNC()3、取余(取模):MODSELECT ROUND(789.536) FROM dual;【1】保留2位小数,(如果是-2则对整数进行四舍五入,变为800了)SELECT ROUND(783.569,2) FROM dual;【2】使用MOD()函数进行取余操作SELECT MOD(10,2) FROM dual;转换函数:1、TO_CHAR():  将日期或数值转换成字符串2、TO_NUMBER():将字符串转换成数字3、TO_DATE():  将字符串转换成日期select TO_DATE('20170208','YYYYMMDD') from DUAL;SELECT SYSDATE FROM dual;Oracle提供了以下的日期函数支持:MONTHS_BETWEEN():求出给定日期范围的月数ADD_MONTHS():在指定日期上加上指定的月数,求出之后的日期NEXT_DAY():下一个的今天的日期LAST_DAY():求出给定日期的最后一天日期     select MONTHS_BETWEEN(SYSDATE,TO_DATE('20170208','YYYYMMDD')) from dual;     select ADD_MONTHS(SYSDATE,1) from dual;       select NEXT_DAY(SYSDATE,2) from dual;select LAST_DAY(SYSDATE) from dual;select  sysdate from dual;--返回字符串首字母变成大写select initcap(t.prod_code) from subs.inf_group t; --在一个字符串中搜索指定字符。 --instr(被搜索字符串,指定字符串,开始搜索的位置,搜索第几个指定字符)select instr('oraclerasdf','ra',1,2) from dual; --返回字符串的长度select length('aaaa') from dual;--返回字符串并且将所有的字符小写select lower('ASDFGHJ') FROM DUAL;--返回字符串并且将所有的字符大写select upper('asdfghj') FROM DUAL;--在字符右边添加字符rpad(被添加添加的字符,添加字符后的总位数,添加的字符)--在字符左边添加字符lpad(被添加添加的字符,添加字符后的总位数,添加的字符)select lpad(rpad('aaa',10,'*'),17,'*') from dual;--删除右边的字符串rtrim(字符串,删除的部分)select rtrim('gao qian jing','ing') from dual;--删除左边的字符串rtrim(字符串,删除的部分)select ltrim('gao qian jing','gao') from dual;--截取字符串substr('字符串',开始的位置,截取字符串的长度)开始的位置坐标从1开始select substr('abcdefghijklmnopqistuvwxyz',3,4) from dual;--替换字符串replace(字符串,被替换的字符串,要替换的字符串)select replace('he love you','he','i') from dual;--返回指定值的绝对值select abs(-100) from dual;--返回一个大于或等于的整数select ceil(3.0001) from dual;--对给定的数据取整select floor(2.67) from dual;--mod(n1,n2)返回一个n1除以n2的余数select mod(13,4) from dual;--power(n1,n2)返回n1的n2次方根select power(3,3) from dual;--按照指定的精度进行舍入select round(1.5),round(1.4),trunc(1.5),trunc(1.4) from dual;--比较数字,大于0返回1,小于0返回-1,等于0返回0select sign(123),sign(-123),sign(0) from dual;--返回数字的根select sqrt(9),sqrt(4) from dual;--按照指定的精度截取一个数select trunc(123.1666,-1),trunc(123.1666,2) from dual;--增加或减去月份select to_char(add_months(to_date('1999-12-07','yyyy-mm-dd'),-3),'yyyy-mm-dd') from dual;--返回日期的最后一天select last_day(to_date('1999-12-07','yyyy-mm-dd')) from dual;--返回两个日期相差的月数select months_between(to_date('1999-1-08','yyyy-mm-dd'),to_date('1999-3-07','yyyy-mm-dd')) from dual;--desc对查询结果进行从大到小的排序 select * from subs.inf_group c order by c.group_id asc;--nvl(n1,n2) n1为null返回n2 n1不为null返回n1--nvl2(n1,n2,n3) n1为null返回n2,n2为null返回n3,n2和n3类型不同,n3会转换成n2类型--nullif(n1,n2) 相等返回null,不相等返回n1在Oracle中的DBMS_RANDOM程序包中封装了一些生成随机数和随机字符串的函数,其中常用的有以下两个:  DBMS_RANDOM.VALUE函数该函数用来产生一个随机数,有两种用法:1. 产生一个介于0和1之间(不包含0和1)的38位精度的随机数,这种用法不包含参数,语法为:DBMS_RANDOM.VALUE RETURN NUMBER;2. 产生一个介于指定范围之内的38位精度的随机数,语法为:DBMS_RANDOM.VALUE(low IN NUMBER,high IN NUMBER) RETURN NUMBER;这种用法包含两参数,参数low用来指定要生成的随机数的下限,参数high指定上限,生成的随机。请注意生成的随机数有可能等于下限,但绝对小于上限,即“low<=随机数
0;  查询出来结果一样,这样前后只用到两次单引号,相对方便点。  还有一个用法,如下:  SELECT code, name, dept, occupation FROM staff WHERE instr(code, '001') > 0;  等同于  SELECT code, name, dept, occupation FROM staff WHERE code LIKE '%001%' ;--生成随即字符dbms_random.string(选项,长度); --选项:u表示大写字母,L表示小写字母,x表示数字和字母混合,p表示任意字符 --随机生成数字:语法1:dbms_random.value; 生成0-1之间随机数 --dbms_random.value*num; 生成0到num之间的随机数 --dbms_random.value(min,max);生成min到max之间的随机数 --随机数取整:round(dbms_random.value(min,max)); 生成min到max之间的随机整数 --随机数取整:trunc(dbms_random.value(min,max)); 生成min到max之间的随机整数--随机获取13100000000~18999999999之间的数字(也就是131到189之间的手机号码)select trunc(dbms_random.value(13100000000,18999999999)) from dual;自定义函数:create or replace function fun_kiki_emp_avg_sal(v_department emp.department%type)return number is/**(3)创建一个函数,以部门号为参数,返回该部门的平均工资。*/v_avg_sal emp.sal%type;begin select avg(sal) into v_avg_sal from emp where department=v_department; return v_avg_sal;end;--测试1declare v_no number:=0;begin v_no:=fun_kiki_emp_avg_sal(10); dbms_output.put_line(v_no);end;---------------------------18579.9218--测试2select fun_kiki_emp_avg_sal(10) from dual;-----------------------------------18579.9218

 

转载于:https://www.cnblogs.com/ChineseIntelligentLanguage/p/6513332.html

你可能感兴趣的文章
5-关联模型
查看>>
不容易系列之一(错排公式+容斥)
查看>>
ProGuard详解
查看>>
学习如何看懂SQL Server执行计划——基本知识篇
查看>>
哈希查找之链地址法解决冲突(代码封装实现)
查看>>
素数筛选(模板)
查看>>
【转】安卓下微信内置浏览器视频出现解析错误
查看>>
[转载]---HiveQL详解
查看>>
剖析IE浏览器子系统的性能权重,互联网营销
查看>>
MPAA组织遭遇尴尬 网页存在XSS攻击漏洞
查看>>
MySQL表数据迁移自动化
查看>>
腰间盘突出方(刘力红)
查看>>
C#加密解密方法(转)
查看>>
code only 和 code first的关系 !! code only 就是 code first !!
查看>>
WCF入门(九)——未处理异常
查看>>
集合划分问题
查看>>
程序执行vhdl中延时器的编写
查看>>
导致flash屏幕重绘的几种方式及避免重绘的方法
查看>>
解读思维导图(一)误区
查看>>
[2014AMC]Navier-Stokes equations with regularity in two entries of the velocity gradient tensor
查看>>