<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-124  評論-49  文章-56  trackbacks-0

    數(shù)字函數(shù)

    1.1、ABS(n)函數(shù)
    描述:返回數(shù)值n的絕對值。

    Examples:select abs(-15) “test” from dual;

    1.2、ACOS(n)函數(shù)
    描述:返回數(shù)值n的反余弦值。輸入數(shù)值范圍在-1~1之間,返回值為弧度。

    Examples:select acos(0.6) “test”,acos(-.6) “test1” from dual;

    1.3、COS(n)函數(shù)
    描述: 返回數(shù)值n的余弦值。返回值為弧度。

    Examples:select cos(1.6) “test”,cos(-6) “test1” from dual;

    1.4、SIN(n)函數(shù)
    描述: 返回數(shù)值n的正弦值。

    Examples:select sin(1.6) “test”,sin(-6) “test1” from dual;

    1.5、ASIN(n)函數(shù)
    描述: 返回數(shù)值n的反正弦值。輸入數(shù)值范圍在-1~1之間,返回值為弧度。

    Examples:select asin(0.6) “test”,asin(-0.6) “test1” from dual;

    1.6、TAN(n)函數(shù)
    描述: 返回數(shù)值n的正切值。

    Examples:select tan(6) “test”,tan(-0.6) “test1” from dual;

    1.7、ATAN(n)函數(shù)
    描述: 返回數(shù)值n的反正切值。輸入數(shù)值任意,返回值為弧度。

    Examples:select atan(6) “test”,atan(-0.6) “test1” from dual;

    1.8、ATAN2(n,m)函數(shù)
    描述: 返回數(shù)值n/m的反正切值。輸入數(shù)值任意,返回值為弧度。

    Examples:select atan2(19,3) “test”,atan2(-9,-0.9) “test1” from dual;

    1.9、SINH(n)函數(shù)
    描述: 返回數(shù)值n的雙曲正弦值。輸入數(shù)值任意。

    Examples:select sinh(6) “test”,sinh(-0.6) “test1” from dual;

    1.10、TANH(n)函數(shù)
    描述: 返回數(shù)值n的雙曲正切值。輸入數(shù)值任意。

    Examples:select tanh(6) “test”,tanh(-0.6) “test1” from dual;

    1.11、CEIL(n)函數(shù)
    描述: 返回大于等于數(shù)值n的最小整數(shù)。

    Examples:select ceil(6) “test”,ceil(6.6) “test1” from dual;

    1.12、COSH(n)函數(shù)
    描述: 返回數(shù)值n的雙曲余弦值。

    Examples:select cosh(6) “test”,cosh(6.6) “test1” from dual;

    1.13、EXP(n)函數(shù)
    描述: 返回e的n次冥。(e=2.71828183…)

    Examples:select exp(6) “test” from dual;

    1.14、FLOOR(n)函數(shù)
    描述: 返回小于等于數(shù)值n的最大整數(shù)。

    Examples:select floor(6) “test”,floor(9.3) “test1” from dual;

    1.15、LN(n)函數(shù)
    描述: 返回數(shù)值n的自然對數(shù)。(n必須大于0)

    Examples:select ln(6) “test” from dual;

    1.16、LOG(m,n)函數(shù)
    描述: 返回以m為底的數(shù)值n的對數(shù)。(m>1,n>0)

    Examples:select log(6,3) “test” from dual;

    1.17、MOD(m,n)函數(shù)
    描述: 返回m/n后的余數(shù),若n=0,則返回m(求模運算)

    Examples:select mod(6,3) “test” from dual;

    1.18、POWER(m,n)函數(shù)
    描述: 返回m的n次冥

    Examples:select power(6,3) “test” from dual;

    1.19、ROUND(n,[m])函數(shù)
    描述: 執(zhí)行四舍五入運算,m可以省略,當省略m時,四舍五入到整數(shù)位;當m為正數(shù)時,四舍五入到小數(shù)點后m位;當m為負數(shù)時,四舍五入到小數(shù)點前m位。

    Examples:select round(6.698,2) “test” from dual;

    1.20、SIGN(n)函數(shù)
    描述: 檢測數(shù)值的正負,當n<0則返回-1;當n>0則返回1,當n=0返回0。

    Examples:select sign(6.698) “test”,sign(-9) “test1”,sign(0) “test2” from dual;

    1.21、SQRT(n)函數(shù)
    描述: 返回數(shù)值n的平方根。(n>=0)

    Examples:select sqrt(6.698) “test” from dual;

    1.22、TRUNC(n,[m])函數(shù)
    描述: 截取數(shù)值n,m可以省略,當省略m時則截取n的小數(shù)部分;當m為正數(shù)時則將n截取到小數(shù)點后m位;當m為負數(shù)時則將n截取到小數(shù)點前m位

    Examples:select trunc(6.698,2) “test”,trunk(696.3,-2) “test1” from dual;

    字符函數(shù)


    說明:字符函數(shù)輸入值為字符類型,返回值為字符類型或數(shù)字類型,可以在sql語句中直接使用,也可以在pl/sql塊中使用。

    2.1、ASCII(n)函數(shù)
    描述: 返回字符串的ascii碼(當輸入為字符串時返回第一個字符的ascii碼)

    Examples:select ascii(‘A’) “test”,ascii(‘我們’) “test1” from dual;

    2.2、CHR(n)函數(shù)
    描述: 返回對應的ascii碼的字符(n必須為數(shù)字類型)

    Examples:select ascii(54992) “test” from dual;

    2.3、CONCAT(n,m)函數(shù)
    描述: 連接n和m,n和m可以是字符,也可以是字符串。作用和”||”一樣。

    Examples:select concat(‘中國’,’人民’) “test” from dual;

    2.4、INITCAP(n)函數(shù)
    描述: 將字符串n中每個單詞首字母大寫,其余小寫(區(qū)分單詞的規(guī)則是按空格或非字母字符;可以輸入中文字符,但沒有任何作用)

    Examples:select initcap(‘中 國 人 民’) “test”,initcap(‘my word’) “test1”,initcap(‘my中國word’) “test2” from dual;

    2.5、INSTR(chr1,chr2,[n,[m]])函數(shù)
    描述: 獲取字符串chr2在字符串chr1中出現(xiàn)的位置。n和m可選,省略是默認為1;n代表開始查找的起始位置,當n為負數(shù)從尾部開始搜索;m代表字串出現(xiàn)的次數(shù)。

    Examples:select instr('pplkoopijk','k',-1,1) “test” from dual;

    備注:當n為負數(shù)從尾部搜索,但返回值仍然是按正向排列得出的位置。

    2.6、LENGTH(n)函數(shù)
    描述: 返回字符或字符串長度。(當n為null時,返回nll;返回的長度包括后面的空格)

    Examples:select length('ppl ') “test”,length(null) “test1” from dual;

    2.7、LOWER(n)函數(shù)
    描述: 將n轉(zhuǎn)換為小寫。

    Examples:select lower('KKKD') “test” from dual;

    2.8、LPAD(chr1,n,[chr2])函數(shù)
    描述: 在chr1左邊填充字符chr2,使得字符總長度為n。chr2可選,默認為空格;當chr1字符串長度大于n時,則從左邊截取chr1的n個字符顯示。

    Examples:select lpad('kkk',5) “test”,lpad(‘kkkkk’,4) “test1”,lpad(‘kkk’,6,’lll’) “test2” from dual;

    2.9、LTRIM(chr,[n])函數(shù)
    描述: 去掉字符串chr左邊包含的n字符串中的任何字符,直到出現(xiàn)一個不包含在n中的字符為止。

    Examples:select ltrim('abcde',’a’) “test”,ltrim(‘abcde’,’b’) “test1”,ltrim(‘abcdefg’,’cba’) “test2” from dual;

    2.10、NLS_INITCAP(chr,[’nls_param’])函數(shù)
    描述: 將chr首字母大寫。Nls_param可選,指定排序的方式。(有SCHINESE_RADICAL_M(部首、筆畫),SCHINESE_STROKE_M(筆畫、部首),SCHINESE_PINYIN_M(拼音))

    Examples:select nls_initcap('ab cde') “test”,nls_initcap(‘a b c d e’,’nls_sort= SCHINESE_PINYIN_M’) “test1” from dual;

    2.11、NLS_LOWER(chr,[‘nls_param’])函數(shù)
    描述: 將字符串轉(zhuǎn)換為小寫。Nls_param可選,指定排序的方式。(有SCHINESE_RADICAL_M(部首、筆畫),SCHINESE_STROKE_M(筆畫、部首),SCHINESE_PINYIN_M(拼音))

    Examples:select nls_lower('ABC') “test”,nls_lower(‘ABC’,’nls_sort= SCHINESE_PINYIN_M’) “test1” from dual;

    2.12、NLSSORT(col,[’nls_param’])函數(shù)
    描述: 根據(jù)nls_param指定的方式對col字段進行排序。

    Examples:SELECT part_number FROM cux_om_part_all ORDER BY nlssort(part_number,'nls_sort=SCHINESE_RADICAL_M')

    2.13、NLS_UPPER(chr,[‘nls_param’])函數(shù)
    描述: 將chr轉(zhuǎn)換為大寫。Nls_param可選,用于指定排序規(guī)則

    Examples:SELECT nls_upper('ddddd','nls_sort=xdanish') FROM dual

    2.14、REGEXP_REPLACE(source_string,pattern,replace_string,position,occurtence,match_parameter)函數(shù)(10g新函數(shù))
    描述:字符串替換函數(shù)。相當于增強的replace函數(shù)。Source_string指定源字符表達式;pattern指定規(guī)則表達式;replace_string指定用于替換的字符串;position指定起始搜索位置;occurtence指定替換出現(xiàn)的第n個字符串;match_parameter指定默認匹配操作的文本串。

    其中replace_string,position,occurtence,match_parameter參數(shù)都是可選的。

    2.15、REGEXP_SUBSTR(source_string, pattern[,position [, occurrence[, match_parameter]]])函數(shù)(10g新函數(shù))
    描述:返回匹配模式的子字符串。相當于增強的substr函數(shù)。Source_string指定源字符表達式;pattern指定規(guī)則表達式;position指定起始搜索位置;occurtence指定替換出現(xiàn)的第n個字符串;match_parameter指定默認匹配操作的文本串。

    其中position,occurtence,match_parameter參數(shù)都是可選的

    Examples:select regexp_substr(‘http://www.oracle.com/products’,’http://([[:alnum:]]+\.?) {3,4} / ?’) “regexp_substr” from dual

    2.16、REGEXP_LIKE(source_string, pattern
    [, match_parameter])函數(shù)(10g新函數(shù))
    描述:返回滿足匹配模式的字符串。相當于增強的like函數(shù)。Source_string指定源字符表達式;pattern指定規(guī)則表達式;match_parameter指定默認匹配操作的文本串。

    其中position,occurtence,match_parameter參數(shù)都是可選的

    Examples:

    2.17、REGEXP_INSTR(source_string, pattern
    [, start_position
    [, occurrence
    [, return_option
    [, match_parameter]]]])函數(shù)(10g新函數(shù))

    描述: 該函數(shù)查找 pattern ,并返回該模式的第一個位置。您可以隨意指定您想要開始搜索的 start_position。 occurrence 參數(shù)默認為 1,除非您指定您要查找接下來出現(xiàn)的一個模式。return_option 的默認值為 0,它返回該模式的起始位置;值為 1 則返回符合匹配條件的下一個字符的起始位置

    Examples:

     

    附注:上面紅色標題的四個函數(shù)是oracle 10g才有的函數(shù),使用正則表達式可以實現(xiàn)很強大的功能。鑒于變化太多,可以參考oracle的官方文檔:SQL Reference(第七章)
    2.18、REPLACE(chr,search_string,[,replacement_string])函數(shù)
    描述:將chr中滿足search_string條件的替換為replacement_string指定的字符串,當search_string為null時,返回chr;當replacement_string為null時,返回chr中截取掉search_string部分的字符串。

    Examples: SELECT REPLACE('abcdeef','e','oo') "test",REPLACE('abcdeef','ee','oo') "test1",REPLACE('abcdeef',NULL,'oo') "test2",REPLACE('abcdeef','ee',NULL) "test3" FROM dual

    2.19、RPAD(chr1,n,chr2)函數(shù)
    描述:在chr1右邊填充chr2,使返回字符串長度為n..當chr1長度大于n時,返回左端n個字符。參考LPAD()函數(shù)。

    2.20、RTRIM(chr,[set])函數(shù)
    描述:去掉chr右邊包含的set中的任何字符,直到出現(xiàn)一個不是set中的字符結(jié)束。參考LTRIM()函數(shù)。

    2.21、SOUNDEX(chr)函數(shù)
    描述:返回字符串的語音表示,可以用來比較字符串的發(fā)音是否相同。

    Examples:select soundex(‘ship’) “test”,soundex(‘sleep’) “test1” from dual;

    2.22、SUBSTR(chr,m[,n])函數(shù)
    描述:取chr的子串。M代表開始位置,n是要取的長度。當m為0時從首字符開始,當m為負時從字符串尾部開始截取。

    Examples:select substr(‘abcdef’,0,3) “test”,substr(‘abcdef’,1,3) “test1”,substr(‘abcdef’,-3,3) “test2”,substr(‘abcdef’,-1,3) “test3” from dual

    注意:m取0或1時,開始位置是一樣的,都是從第一位開始,m為負的時候,仍然是按從左到右的順序取,所以如果m為-1,n的長度再大,也只能取到最后一個字符,因為chr右邊已經(jīng)沒有字符了。

    2.23、TRANSLATE(chr,from_str,to_str)函數(shù)
    描述:另一種替換函數(shù)的用法。

    Examples: SELECT translate('abcdeabc','abc','fgh') "test",translate('abcdeabc','abc','hf') "test1",translate('abcdeabc','ab','hfgh') "test2",translate('abcdeabc','abc',' ') "test3" FROM dual

    注意:匹配的規(guī)則是from_str和to_str每個字符按順序相對應,如果from_str字符少于to_str中的字符,則只替換能對應的字符,to_str后面不能和from_str對應的字符則不管,如果from_str字符多于to_str字符,則from_str中找不到對應字符按照null來處理。

    2.24、TRIM(chr)函數(shù)
    TRIM函數(shù)將字符串的前綴(或尾隨)字符刪除。

    其具體的語法格式如下:

    TRIM([LEADING|TRAILING|BOTH][trimchar FROM] string)

    其中:

    LEADING 指明僅僅將字符串的前綴字符刪除

    TRAILING 指明僅僅將字符串的尾隨字符刪除

    BOTH 指明既刪除前綴字符,也刪除尾隨字符。這也是默認方式

    string 任意一待處理字符串

    trimchar 可選項。指明試圖刪除什么字符,默認被刪除的字符是空格

    下面是該函數(shù)的使用情況:

    TRIM(’ Ashley ’)=‘Ashley’

    TRIM(LEADING ’*’ FROM’***Ashley***’)=‘Ashley***’

    2.25、UPPER(chr)函數(shù)
    UPPER函數(shù)間返回字符串的大寫形式。

    其具體的語法格式如下:

    UPPER(string)

    其中:

    string 任意VARCHAR2或CHAR型字符串

    下面是該函數(shù)的使用情況:

    UPPER(’THIS IS a Test’)=‘THIS IS A TEST’

    日期函數(shù)

    3.1、add_months(d,n)
    說明:用于從一個日期值增加或減少一些月份,d代表一個日期,n為正數(shù)則代表在d日期 上增加n月份,n為負數(shù)則代表在d日期上減少n月
    例:select add_months(sysdate,12) "Next Year" from dual;
    3.2、current_date()

    說明:返回當前會話時區(qū)中的當前日期時間
    alter session set time_zone=’-11:00’(更改當前會話時區(qū)命令)
    例:select sessiontimezone,current_date from dual;
    3.3、dbtimezone()

    說明:返回數(shù)據(jù)庫實例時區(qū)
    select dbtimezone from dual;
    3.4、extract()

    說明:顯示指定格式的日期值。
    select extract(month from sysdate) "This Month" from dual;
    select extract(year from add_months(sysdate,36)) "3 Years Out" from dual;
    3.5、last_day()

    說明:返回包含了日期參數(shù)的月份的最后一天的日期
    select last_day(sysdate) "last" from dual;
    3.6、months_between(d1,d2)

    說明:返回d1和d2兩個月份之間相差的月數(shù),若d1<d2,返回負數(shù);d1>d2,返回正數(shù);若d1和d2都是月底或者天數(shù)相同,則返回整數(shù),否則以每月31天為基準數(shù)返回小數(shù)。
    select months_between(to_date('2007-01-31','yyyy-mm-dd'),to_date('2006-11-30','yyyy-mm-dd')) from dual;
    3.7、next_day(d,varchar2)

    說明:返回日期d指定的在日期d之后的第一個工作日;

    SELECT next_day(SYSDATE,'星期四') FROM dual;

    Select next_day(sysdate,’monday’) from dual; 錯誤,不能使用英文單詞

    返回當前日期后的第一個星期四的日期。若當前日期已經(jīng)是星期四或過了星期四,則返回下周的星期四對應的日期,否則返回本周星期四的日期。

    注意:varchar2指定工作日的時候和當前數(shù)據(jù)庫實例的參數(shù)設(shè)置有關(guān),字符串需要用中文寫,如果中文不行,就使用英文星期代表。

    3.8、round(d,fmt)
    說明:返回日期時間的四舍五入結(jié)果。如果fmt指定年,則以7月1日為分界;如果指定月,則以16日為分界;關(guān)于按天來四舍五入,在測試時無法理解(資料上解釋按天的時候是以中午12:00為分界)

    Select round(sysdate,’month’) from dual;

    3.9、trunc(d,fmc)
    說明:按照指定的格式截斷日期,如果指定格式為年,則結(jié)果為本年1月1日,如果格式指定為月,則結(jié)果為本月1日,關(guān)于格式指定為天還未理解。

    SELECT trunc(SYSDATE,'month') FROM dual;

    3.10、sysdate

    應用:
    1. 日期和字符轉(zhuǎn)換函數(shù)用法(to_date,to_char)

    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual; //日期轉(zhuǎn)化為字符串
    select to_char(sysdate,'yyyy') as nowYear from dual; //獲取時間的年
    select to_char(sysdate,'mm') as nowMonth from dual; //獲取時間的月
    select to_char(sysdate,'dd') as nowDay from dual; //獲取時間的日
    select to_char(sysdate,'hh24') as nowHour from dual; //獲取時間的時
    select to_char(sysdate,'mi') as nowMinute from dual; //獲取時間的分
    select to_char(sysdate,'ss') as nowSecond from dual; //獲取時間的秒


    select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from dual//

    2. select to_char( to_date(222,'J'),'Jsp') from dual

    顯示Two Hundred Twenty-Two

    3.求某天是星期幾
    select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;
    星期一
    select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;
    monday
    設(shè)置日期語言
    ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
    也可以這樣
    TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')

    4. 兩個日期間的天數(shù)
    select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;

    5. 時間為null的用法
    select id, active_date from table1
    UNION
    select 1, TO_DATE(null) from dual;

    注意要用TO_DATE(null)

    6.月份差
    a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd')
    那么12月31號中午12點之后和12月1號的12點之前是不包含在這個范圍之內(nèi)的。
    所以,當時間需要精確的時候,覺得to_char還是必要的

    7. 日期格式?jīng)_突問題
    輸入的格式要看你安裝的ORACLE字符集的類型, 比如: US7ASCII, date格式的類型就是: '01-Jan-01'
    alter system set NLS_DATE_LANGUAGE = American
    alter session set NLS_DATE_LANGUAGE = American
    或者在to_date中寫
    select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;
    注意我這只是舉了NLS_DATE_LANGUAGE,當然還有很多,
    可查看
    select * from nls_session_parameters
    select * from V$NLS_PARAMETERS
    8.
    select count(*)
    from ( select rownum-1 rnum
    from all_objects
    where rownum <= to_date('2002-02-28','yyyy-mm-dd') - to_date('2002-
    02-01','yyyy-mm-dd')+1
    )
    where to_char( to_date('2002-02-01','yyyy-mm-dd')+rnum-1, 'D' )
    not in ( '1', '7' )

    查找2002-02-28至2002-02-01間除星期一和七的天數(shù)
    在前后分別調(diào)用DBMS_UTILITY.GET_TIME, 讓后將結(jié)果相減(得到的是1/100秒, 而不是毫秒).

    9. 查找月份
    select months_between(to_date('01-31-1999','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;
    1
    select months_between(to_date('02-01-1999','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;
    1.03225806451613

    10. Next_day的用法
    Next_day(date, day)

    Monday-Sunday, for format code DAY
    Mon-Sun, for format code DY
    1-7, for format code D

    11
    select to_char(sysdate,'hh:mi:ss') TIME from all_objects
    注意:第一條記錄的TIME 與最后一行是一樣的
    可以建立一個函數(shù)來處理這個問題
    create or replace function sys_date return date is
    begin
    return sysdate;
    end;

    select to_char(sys_date,'hh:mi:ss') from all_objects;

    12.獲得小時數(shù)
    extract()找出日期或間隔值的字段值
    SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 2:38:40') from offer
    SQL> select sysdate ,to_char(sysdate,'hh') from dual;

    SYSDATE TO_CHAR(SYSDATE,'HH')
    -------------------- ---------------------
    2003-10-13 19:35:21 07

    SQL> select sysdate ,to_char(sysdate,'hh24') from dual;

    SYSDATE TO_CHAR(SYSDATE,'HH24')
    -------------------- -----------------------
    2003-10-13 19:35:21 19


    13.年月日的處理
    select older_date,
    newer_date,
    years,
    months,
    abs(
    trunc(
    newer_date-
    add_months( older_date,years*12+months )
    )
    ) days

    from ( select
    trunc(months_between( newer_date, older_date )/12) YEARS,
    mod(trunc(months_between( newer_date, older_date )),12 ) MONTHS,
    newer_date,
    older_date
    from (
    select hiredate older_date, add_months(hiredate,rownum)+rownum newer_date
    from emp
    )
    )

    14.處理月份天數(shù)不定的辦法
    select to_char(add_months(last_day(sysdate) +1, -2), 'yyyymmdd'),last_day(sysdate) from dual

    16.找出今年的天數(shù)
    select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual

    閏年的處理方法
    to_char( last_day( to_date('02' | | :year,'mmyyyy') ), 'dd' )
    如果是28就不是閏年

    17.yyyy與rrrr的區(qū)別
    'YYYY99 TO_C
    ------- ----
    yyyy 99 0099
    rrrr 99 1999
    yyyy 01 0001
    rrrr 01 2001

    18.不同時區(qū)的處理
    select to_char( NEW_TIME( sysdate, 'GMT','EST'), 'dd/mm/yyyy hh:mi:ss') ,sysdate
    from dual;

    19.5秒鐘一個間隔
    Select TO_DATE(FLOOR(TO_CHAR(sysdate,'SSSSS')/300) * 300,'SSSSS') ,TO_CHAR(sysdate,'SSSSS')
    from dual

    2002-11-1 9:55:00 35786
    SSSSS表示5位秒數(shù)

    20.一年的第幾天
    select TO_CHAR(SYSDATE,'DDD'),sysdate from dual

    310 2002-11-6 10:03:51

    21.計算小時,分,秒,毫秒
    select
    Days,
    A,
    TRUNC(A*24) Hours,
    TRUNC(A*24*60 - 60*TRUNC(A*24)) Minutes,
    TRUNC(A*24*60*60 - 60*TRUNC(A*24*60)) Seconds,
    TRUNC(A*24*60*60*100 - 100*TRUNC(A*24*60*60)) mSeconds
    from
    (
    select
    trunc(sysdate) Days,
    sysdate - trunc(sysdate) A
    from dual
    )

    select * from tabname
    order by decode(mode,'FIFO',1,-1)*to_char(rq,'yyyymmddhh24miss');

    //
    floor((date2-date1) /365) 作為年
    floor((date2-date1, 365) /30) 作為月
    d(mod(date2-date1, 365), 30)作為日.

    23.next_day函數(shù) 返回下個星期的日期,day為1-7或星期日-星期六,1表示星期日
    next_day(sysdate,6)是從當前開始下一個星期五。后面的數(shù)字是從星期日開始算起。
    1 2 3 4 5 6 7
    日 一 二 三 四 五 六

    ---------------------------------------------------------------

    select (sysdate-to_date('2003-12-03 12:55:45','yyyy-mm-dd hh24:mi:ss'))*24*60*60 from ddual
    日期 返回的是天 然后 轉(zhuǎn)換為ss

    24,round[舍入到最接近的日期](day:舍入到最接近的星期日)
    select sysdate S1,
    round(sysdate) S2 ,
    round(sysdate,'year') YEAR,
    round(sysdate,'month') MONTH ,
    round(sysdate,'day') DAY from dual

    25,trunc[截斷到最接近的日期,單位為天] ,返回的是日期類型
    select sysdate S1,
    trunc(sysdate) S2, //返回當前日期,無時分秒
    trunc(sysdate,'year') YEAR, //返回當前年的1月1日,無時分秒
    trunc(sysdate,'month') MONTH , //返回當前月的1日,無時分秒
    trunc(sysdate,'day') DAY //返回當前星期的星期天,無時分秒
    from dual

    26,返回日期列表中最晚日期
    select greatest('01-1月-04','04-1月-04','10-2月-04') from dual

    27.計算時間差
    注:oracle時間差是以天數(shù)為單位,所以換算成年月,日

    select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))/365) as spanYears from dual //時間差-年
    select ceil(moths_between(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))) as spanMonths from dual //時間差-月
    select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))) as spanDays from dual //時間差-天
    select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))*24) as spanHours from dual //時間差-時
    select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))*24*60) as spanMinutes from dual //時間差-分
    select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))*24*60*60) as spanSeconds from dual //時間差-秒

    28.更新時間
    注:oracle時間加減是以天數(shù)為單位,設(shè)改變量為n,所以換算成年月,日
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n*365,'yyyy-mm-dd hh24:mi:ss') as newTime from dual //改變時間-年
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),add_months(sysdate,n) as newTime from dual //改變時間-月
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n,'yyyy-mm-dd hh24:mi:ss') as newTime from dual //改變時間-日
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n/24,'yyyy-mm-dd hh24:mi:ss') as newTime from dual //改變時間-時
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n/24/60,'yyyy-mm-dd hh24:mi:ss') as newTime from dual //改變時間-分
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n/24/60/60,'yyyy-mm-dd hh24:mi:ss') as newTime from dual //改變時間-秒

    29.查找月的第一天,最后一天
    SELECT Trunc(Trunc(SYSDATE, 'MONTH') - 1, 'MONTH') First_Day_Last_Month,
    Trunc(SYSDATE, 'MONTH') - 1 / 86400 Last_Day_Last_Month,
    Trunc(SYSDATE, 'MONTH') First_Day_Cur_Month,
    LAST_DAY(Trunc(SYSDATE, 'MONTH')) + 1 - 1 / 86400 Last_Day_Cur_Month
    FROM dual;

    轉(zhuǎn)換函數(shù)

    4.1、asciistr(str)
    說明:將任意字符集的字符串轉(zhuǎn)換為當前數(shù)據(jù)庫實例對應的ascii字符串。

    SELECT asciistr('中華民族') FROM dual;

    備注:和該函數(shù)相似的有ascii,它是取得字符串第一個字符的ascii碼,后面的字符不管;chr是將ascii碼轉(zhuǎn)換為對應的字符。

    4.2、cast()
    說明:將一個內(nèi)置數(shù)據(jù)類型或集合類型轉(zhuǎn)變?yōu)榱硪粋€內(nèi)置數(shù)據(jù)類型或集合類型。

    SELECT CAST(SYSDATE AS VARCHAR2(100)) FROM dual;

    4.3、chartorowid(str)
    說明:將字符串轉(zhuǎn)變?yōu)閞owid數(shù)據(jù)類型,但字符串必須符合rowid格式。

    4.4、convert(str,char_set,source_char_set)
    說明:將字符串從一個字符集轉(zhuǎn)變?yōu)榱硪粋€字符集。Str為要轉(zhuǎn)變的字符串,char_set為轉(zhuǎn)變后的字符集,source_char_set為該字符串原始的字符集。

    SELECT convert('中國','US7ASCII','ZHS16GBK') FROM dual;

    4.4、rowidtochar(rowid)
    說明:將rowid轉(zhuǎn)換為對應的varchar2數(shù)據(jù)類型值。

    4.5、to_char()
    select to_char(n’中國’) from dual; 轉(zhuǎn)變?yōu)楸镜刈址愋?/p>

    select to_char(10000,’L99G999D99MI’) from dual; 轉(zhuǎn)換成貨幣格式

    4.6、to_date()
    轉(zhuǎn)變?yōu)槿掌诟袷健?/p>

    4.7、to_number()
    將字符串轉(zhuǎn)變?yōu)閿?shù)字值,但字符串必須是數(shù)字(0~9)。

    單行函數(shù)

    decode(exer.search1,result1[search2,result2,...][,defalut])
    用于匹配特定表達式的結(jié)果,如果search1匹配于exer,則返回result1,如果search2匹配于exer則返回result2,
    依次類推,如果沒有任何匹配關(guān)系則返回defalut

    分組函數(shù)


    6.1AVG 取平均值
    Select AVG(SAL) From EMP

    6.2max 取最大值
    select max(sal) from emp

    6.3min 取最小值
    select min(sal) from emp

    6.4count 取記錄數(shù)
    SELECT COUNT(*) FROM EMP
    也可以
    select count(empno) from emp
    注意:
    要么count(*)
    要么count(沒有null值的列---主鍵)

     

    6.5sum 求和
    Select SUM(SAL*12) From EMP

    應用:

    1.分組函數(shù)和distinct關(guān)鍵詞的搭配
    Select COUNT(Distinct SAL) From EMP

     

    2.組函數(shù)與空值
    select count(comm) from emp
    空值不參與運算,直接被過濾掉

     

    3.分組數(shù)據(jù)
    group by子句
    SELECT COUNT(*) FROM EMP GROUP BY DEPTNO

    4.使用group by規(guī)則
    A.group by后面的字段不必顯示在select列表中
    B.反之則不行
    也就是說:select后面的字段必須在group by子句中出現(xiàn)
    例外的是:
    在組函數(shù)(count,max,min等)中出現(xiàn)的字段除外

    5.關(guān)于group by條件分組的問題
    A.group by可以和where來搭配
    where只能在group by的前面
    Select JOB From EMP Where SAL>2000 Group By JOB
    group by后面不能有where

    B.where子句中不能包括組函數(shù)
    條件的表達只能使用having來表示
    Select DEPTNO,Max(SAL),Min(SAL) From EMP Group By DEPTNO Having Max(SAL)>2000

    對象函數(shù)

    posted on 2010-07-28 18:22 junly 閱讀(779) 評論(0)  編輯  收藏 所屬分類: oracle/mysql/sql
    主站蜘蛛池模板: 免费一区二区无码视频在线播放| 中文日韩亚洲欧美制服| 一级午夜a毛片免费视频| 亚洲1区1区3区4区产品乱码芒果| 免费无码av片在线观看| 女人张腿给男人桶视频免费版| 亚洲人和日本人jizz| 黄色网址免费在线| 37pao成人国产永久免费视频| 四虎成人免费大片在线| 国产成人精品日本亚洲专| 69堂人成无码免费视频果冻传媒| 亚洲w码欧洲s码免费| 香蕉高清免费永久在线视频| 亚洲av无码不卡一区二区三区| 精品免费tv久久久久久久| 亚洲人成在线影院| 久久er国产精品免费观看8| 亚洲人JIZZ日本人| 理论亚洲区美一区二区三区 | 99热免费在线观看| 国产亚洲精品bv在线观看| 和老外3p爽粗大免费视频| 亚洲国产精品无码久久久不卡| 在线人成免费视频69国产 | 国产偷窥女洗浴在线观看亚洲 | 无码人妻久久一区二区三区免费丨| 亚洲国产成人99精品激情在线| 日本特黄a级高清免费大片| 亚洲精品一区二区三区四区乱码| 美女裸身网站免费看免费网站| 久久亚洲国产精品五月天| 一区二区三区精品高清视频免费在线播放 | 国产免费一区二区视频| 亚洲日韩精品无码专区网站| 亚洲熟伦熟女专区hd高清| 亚洲一区免费观看| 亚洲AV无码一区二区三区DV| 2021国产精品成人免费视频| 午夜亚洲乱码伦小说区69堂| 日韩特黄特色大片免费视频|