常用函數 A-C D-G H-L M-Q R-Z 三角函數
SQL-99 純量函數 abs ( numeric_expression ) 傳回 "numeric_expression" 的絕對值。若為負值,則會傳回正值。 範例:abs ( 15 ) 結果:15 範例:abs ( -15 ) 結果:15 bit_length bit_length ( string_expression ) 傳回 "string_expression" 中的位元數。 cast ( expression , datatype_specification ) 將 "expression" 轉換為指定的資料類型。某些資料類型允許指定長度和精準度。請確定目標的類型和大小是適當的。可使用下列的資料類型作為 "datatype_specification":character、varchar、char、numeric、decimal、integer、bigint、smallint、real、float、date、time、timestamp、time with time zone、timestamp with time zone 和 interval。當類型強制轉型為 interval 類型時,必須指定下列其中一項 interval 限定元:若為 year-to-month 的 interval 資料類型,請指定 year、month 或 year to month;若為 day-to-second 的 interval 資料類型,請指定 day、hour、minute、second、day to hour、day to minute、day to second、hour to minute、hour to second 或 minute to second。附註:當您將 timestamp 類型的值轉換為 date 類型時,會忽略時間戳記值的時間部分。當您將 timestamp 類型的值轉換為 time 類型時,會忽略時間戳記的日期部分。當您將 date 類型的值轉換為 timestamp 類型時,會將時間戳記的時間元件設為零。當您將 time 類型的值轉換為 timestamp 類型時,會將日期元件設為現行系統日期。將某種 interval 資料類型轉換為其他類型是無效的(例如,因為一個月包含的天數是會改變的)。請注意,您只能指定前導限定元的位數,例如 YEAR(4) TO MONTH、DAY(5)。如果目標的類型和大小與來源的類型和大小不相容,將會報告錯誤。 範例:cast ( '123' , integer ) 結果:123 範例:cast ( 12345 , varchar ( 10 ) ) 結果:包含 12345 的字串 char_length ( string_expression ) 傳回 "string_expression" 中的邏輯字元數。在某些東亞語言環境中,邏輯字元數與位元組數不同。 範例:char_length ( 'Canada' ) 結果:6 character_length ( string_expression ) 傳回 "string_expression" 中的字元數。 範例:character_length ( 'Canada' ) 結果:6 current_date current_date 傳回日期值,代表執行資料庫軟體的電腦上的現行日期。 範例:current_date 結果:2003-03-04 current_time current_time 傳回包含時區的時間值,如果資料庫支援此函數,此值便代表執行此資料庫軟體的電腦的現行時間。否則,它代表執行 IBM® Cognos® BI 軟體的電腦的現行時間。 範例:current_time 結果:16:33:11.354+05:00 current_timestamp current_timestamp 傳回包含時區的日期時間值,如果資料庫支援此函數,此值便代表執行此資料庫軟體的電腦的現行時間。否則,它代表執行 IBM® Cognos® BI 軟體的電腦的現行時間。 範例:current_timestamp 結果:2003-03-03 16:40:15.535+05:00 localtime localtime 傳回一個時間值,此值代表執行資料庫軟體的電腦的現行時間。 範例:localtime 結果:16:33:11 localtimestamp localtimestamp 傳回一個日期時間值,此值代表執行資料庫軟體的電腦的現行時間戳記。 範例:localtimestamp 結果:2003-03-03 16:40:15 extract ( datepart , datetime_expression ) 傳回一個整數,此整數代表 "datetime_expression" 中的 datepart 值(year、month、day、hour、minute、second、epoch)。 範例:extract ( year , 2003-03-03 16:40:15.535 ) 結果:2003 範例:extract ( hour , 2003-03-03 16:40:15.535 ) 結果:16 範例:extract ( epoch , 2014-11-23 ) 結果:1416718800 lower ( string_expression ) 傳回其所有大寫字元均已轉變成小寫字元的 "string_expression"。 範例:lower ( 'ABCDEF' ) 結果:abcdef mod ( integer_expression1, integer_expression2 ) 傳回 "integer_expression1" 除以 "integer_expression2" 得到的餘數(模數)。"Integer_expression2" 不得為零,否則會引起異常狀況。 範例:mod ( 20 , 3 ) 結果:2 occurrences_regex ( regex_expression , string_expression [ , integer_expression [ , flags_expression ]] ) 傳回一個整數值,此值代表 "string_expression" 中正規表示式 "regex_expression" 的出現次數。搜尋開始於位置 "integer_expression",其預設值為 1。設定解譯正規表示式之選項的旗標是由 "flags_expression" 指定。個別字母是用來定義旗標,而有效值為 's'、'm'、'i' 和 'x'。 範例:occurrences_regex ( '.er' , 'Flicker Lantern') 結果:2 octet_length ( string_expression ) 傳回 "string_expression" 中的位元組數。 範例:octet_length ( 'ABCDEF' ) 結果:6 範例:octet_length ( '' ) 結果:0 position ( string_expression1 , string_expression2 ) 傳回一個整數值,此數字代表 "string_expression1" 在 "string_expression2" 中的起始位置,若找不到 "string_expression1" 則為 0。 範例:position ( 'C' , 'ABCDEF' ) 結果:3 範例:position ( 'H' , 'ABCDEF' ) 結果:0 position_regex ([ start|after ]  regex_expression , string_expression [ , integer_expression1 [ , integer_expression2 [ , flags_expression ]]] ) 傳回一個整數值,此值代表 "string_expression" 中符合正規表示式 "regex_expression" 之子字串的開始或結束位置。搜尋開始於位置 "integer_expression1",其預設值為 1。要搜尋之型樣的出現項目是由 "integer_expression2" 指定,其預設值為 1。第一個引數所指定的傳回選項指定相對於出現項目所傳回的項目。如果您指定 "start",則會傳回出現項目之第一個字元的位置。如果您指定 "after",則會傳回出現項目後面之字元的位置。如果您未指定傳回選項,則 "start" 是隱含內容。設定解譯正規表示式之選項的旗標是由 "flags_expression" 指定。個別字母是用來定義旗標,而有效值為 's'、'm'、'i' 和 'x'。 範例:position_regex ( '.er' , 'Flicker Lantern') 結果:5 範例:position_regex ( after '.er' , 'Flicker Lantern' ) 結果:8 範例:position_regex ( '.er' , 'Flicker Lantern' , 1 , 2 ) 結果:12 trim ( [ [ trailing|leading|both ] [ match_character_expression ] , ] string_expression ) 傳回修剪掉前導空格和尾端空格或修剪掉 "match_character_expression" 中指定的特定字元後得到的 "string_expression"。如果沒有指定第一個引數,表示是 "both";如果沒有指定第二個引數,表示是空的。 範例:trim ( trailing 'A' , 'ABCDEFA' ) 結果:ABCDEF 範例:trim ( both , ' ABCDEF ' ) 結果:ABCDEF upper ( string_expression ) 傳回其所有小寫字元均已轉換成大寫字元的 "string_expression"。 範例:upper ( 'abcdef' ) 結果:ABCDEF user user 在執行時期傳回授權 ID 給資料庫管理程式。 nullif nullif ( expression1, expression2 ) 如果 "expression1" 等於 "expression2" 會傳回空值,否則會傳回 "expression1"。 coalesce ( expression_list ) 傳回第一個非空值的引數(如果所有引數均為空值,則會傳回空值)。"expression_list" 需要兩個以上的引數。 coalesce ( [單價], [單位售價] ) 結果:傳回單價,如果單價為空值,則會傳回單位售價。 coalesce ( expression_list ) 傳回第一個非空值的引數(如果所有引數均為空值,則會傳回空值)。"expression_list" 需要一個以上的引數。 coalesce ( [單價], [單位售價] ) 結果:傳回單價,如果單價為空值,則會傳回單位售價。 ceil ( numeric_expression ) 傳回大於或等於 "numeric_expression" 的最小整數。 ceiling ( numeric_expression ) 傳回大於或等於 "numeric_expression" 的最小整數。 範例:ceiling ( 4.22 ) 結果:5 範例:ceiling ( -1.23 ) 結果:-1 ln ( numeric_expression ) 傳回 "numeric_expression" 的自然對數。 範例:ln ( 4 ) 結果:1.38629 exp ( numeric_expression ) 傳回 'e' 的 "numeric_expression" 次方。常數 'e' 是自然對數的基數。 範例:exp ( 2 ) 結果:7.389056 period ( datetime_expression1 , datetime_expression2 ) 建構起點為 "datetime_expression1" 且終點為 "datetime_expression2" 的期間值。起點和終點的資料類型必須相同,而且可以是 date、time 或 dateTime 中的其中一個。期間值可用於期間述詞中。 範例:period ( 2003-03-03 , 2003-10-03 ) 範例:period ( 12:00:00 , 23:59:59 ) 範例:period ( 2003-03-03 12:00:00 , 2003-10-03 23:59:59 ) 範例:period ( [EMP].[BUS_START] , [EMP].[BUS_END] ) power ( numeric_expression1 , numeric_expression2 ) 傳回 "numeric_expression1" 的 "numeric_expression2" 次方。如果 "numeric_expression1" 是負數,則 "numeric_expression2" 的結果一定是整數值。 範例:power ( 3 , 2 ) 結果:9 random ( [ integer_expression ] ) 使用選用的 "integer_expression" 作為種子值,傳回 0 和 1 之間的隨機浮點值。 _round ( numeric_expression , integer_expression ) 傳回四捨五入到小數點右邊第 "integer_expression" 位數的 "numeric_expression"。注意:"integer_expression" 必須是非負數的整數。在替資料套用格式之前,請先將它四捨五入。 範例:_round ( 1220.42369, 2 ) 結果:1220.42 新的建構子代表已組織為一列資料的值集合。它可以用於條件式表示式(亦即 IF-THEN-ELSE)及過濾表示式(亦即 IN 子句)中。 row ( expression_list ) 範例: if ( row([RetailerName],[OrderMethodCode]) = row('ActiForme',4) ) then ('A') else ('B') 結果:如果「零售商名稱」為 'ActiForme',且訂購方式代碼為 4,則傳回 'A'。否則,傳回值 'B'。 範例: case row([RetailerName],[OrderMethodCode]) when row('Advanced Climbing Ltd',3) then 1 when row('ActiForme',5) then 2 else 3 end 結果:如果「零售商名稱」為 'Advanced Climbing Ltd',且訂購方式代碼為 3,則傳回 1。如果「零售商名稱」為 'ActiForme',且訂購方式代碼為 5,則傳回 2。否則,傳回值 3。 範例:row ( [OrderMethodCode], [Year] ) in ( [Query].[OMC], [Query].[YR] ) 結果:傳回的資料是根據下列兩個條件來過濾: 1) [OrderMethodCode] in ([Query].[OMC]) 2) [Year] in ([Query].[YR]) sqrt ( numeric_expression ) 傳回 numeric_expression" 的平方根。"Numeric_expression" 不得為負數。 範例:sqrt ( 9 ) 結果:3 substring ( string_expression , integer_expression1 [ , integer_expression2 ] ) 傳回 "string_expression" 的子字串,此子字串是從位置 "integer_expression1" 開始取 "integer_expression2" 個字元(如果忽略 "integer_expression2",則是到 "string_expression" 結尾)所得到的字串。"string_expression" 中的第一個字元是在位置 1。 範例:substring ( 'abcdefg' , 3 , 2 ) 結果:cd substring_regex ( regex_expression , string_expression [ , integer_expression1 [ , integer_expression2 [ , flags_expression ]]] ) 傳回符合正規表示式 "regex_expression" 之 "string_expression" 的子字串。搜尋開始於位置 "integer_expression1",其預設值為 1。要搜尋之型樣的出現項目是由 "integer_expression2" 指定,其預設值為 1。設定解譯正規表示式之選項的旗標是由 "flags_expression" 指定。個別字母是用來定義旗標,而有效值為 's'、'm'、'i' 和 'x'。 範例:substring_regex ( '.er' , 'Flicker Lantern') 結果:ker 範例:substring_regex ( '.er' , 'Flicker Lantern' , 1 , 2 ) 結果:ter floor ( numeric_expression ) 傳回小於或等於 "numeric_expression" 的最大整數。 範例:floor ( 3.22 ) 結果:3 範例:floor ( -1.23 ) 結果:-2 width-bucket ( numeric_expression ,  min_value ,  max_value ,  num_of_buckets ) 針對給定的表示式,此函數會將儲存區編號返回至評估之後此表示式將變成的值。 範例:width-bucket ( Quantity ,  100 ,  5000 ,  10 ) 結果:針對每一列,傳回現行「數量」值的儲存區編號(從 0 至 11)。 Quantity width-bucket (Quantity) ------------ ------------------------------------- 50 0 450 1 1400 3 3600 8 4900 10 5000 11 sin ( numeric_expression ) 此三角函數會返回引數的正弦,其中引數是弧度中所表示的角度。 範例:sin ( 0.1667 * 3.1415 ) 結果:0.5 cos ( numeric_expression ) 此三角函數會返回引數的餘弦,其中引數是弧度中所表示的角度。 範例:cos ( 0.3333 * 3.1415 ) 結果:0.5 tan ( numeric_expression ) 此三角函數會返回引數的正切,其中引數是弧度中所表示的角度。 範例:tan ( 0.25 * 3.1415 ) 結果:1 arccos ( numeric_expression ) 這個反向三角函數會傳回引數的弧形餘弦,其中引數的範圍是 -1 至 1,並且結果為弧度中所表示的值。 範例:arccos ( -1 ) 結果:3.1415 arcsin ( numeric_expression ) 這個反向三角函數會傳回引數的弧形正弦,其中引數的範圍是 -1 至 1,並且結果為弧度中所表示的值。 範例:arcsin ( 0 ) 結果:3.1415 這個反向三角函數會傳回引數的弧形正切,其中引數的範圍是 -1 至 1,並且結果為弧度中所表示的值。 arctan ( numeric_expression ) 範例:arctan ( 0 ) 結果:3.1415 coshyp ( numeric_expression ) 此三角函數會返回引數的雙曲線餘弦,其中引數是弧度中所表示的角度。 範例:coshyp ( 0 ) 結果:1 sinhyp ( numeric_expression ) 此三角函數會返回引數的雙曲線正弦,其中引數是弧度中所表示的角度。 範例:sinhyp ( 0 ) 結果:0 tanhyp ( numeric_expression ) 此三角函數會返回引數的雙曲線正切,其中引數是弧度中所表示的角度。 範例:tanhyp ( 0 ) 結果:0
SQL-99 OLAP 延伸函數 cube cube ( grouping_column_reference_list ) 這是一個 'group by' 子句,此子句會產生一個分組集清單,其中包含 "grouping_column_reference_list" 中的分組直欄的所有可能組合的分組集。 rollup rollup ( grouping_column_reference_list ) 這是一個 'group by' 子句,此子句會從右邊開始逐一刪除元素而產生一個分組集清單,其中包含 "grouping_column_reference_list" 的每個適當子清單的分組集。 grouping sets grouping sets ( grouping_set_list ) 這是一個 'group by' 子句,它會指定要分組的多個集。 rank rank () 計算視窗分割區中列的等級,其中列 x 的等級定義為 1 加上高於 x 但不等於 x 的列數。 dense_rank dense_rank () 計算視窗分割區中列的密集等級,其中列 x 的密集等級定義為高於並包括 x 且不同的列數。 percent_rank percent_rank () 計算視窗分割區中列的百分比等級,其中列 x 的百分比等級定義為 (xy - 1) / (ab - 1),其中 xy 為 x 的等級,而 ab 為視窗分割區中的列數。 row_number row_number () 計算視窗分割區中列的序列號,從 1(代表第一列)開始。 ntile ntile ( numeric_expression ) 將已排序的資料集分成 "numeric_expression" 個儲存區,並為每一列指定相稱的儲存區編號。