一,TRIM ,去除空字符 TRIM(EXPR)
SUBSTRING("UT TIME"."月份" FROM 6 FOR 2)
1、AGGREGATE AT
此函數根據指定的級別聚合列。使用AGGREGATE AT 可確保始終在關鍵字AT 之后指定的級別執行度量聚合,而無論WHERE 子句如何。
語法
AGGREGATE(expr AT level [, level1, levelN])
其中:
expr 是至少引用一個度量列的任何表達式。
level 是要在其中聚合的級別。您可以選擇性地指定多個級別。
您不能指定這樣的級別:該級別源自的維所包含的級別將用作您在第一個參數中指定的度量的度量級別。例如,您不能以AGGREGATE(yearly_sales AT month) 形式寫入該函數,這是因為“month”源自的時間維與用作“yearly_sales”的度量級別的時間維相同。
以下示例顯示了AGGREGATE AT 函數和示例結果:
SELECT month, year, AGGREGATE(sales AT Year)FROM timeseriestestingWHERE year = 1994 AND month = 12
由於AGGREGATE AT 運算符始終在謂詞之前執行,因此它始終返回在關鍵字AT 后指定的時間級別的正確合計。
2、AVG
此函數計算結果集中表達式的平均值。它必須采用數值表達式作為參數。
請注意,AVG 的分母為聚合的行數。因此,在 Oracle Business Intelligence 中進行計算時,使用AVG(x) 通常是錯誤的。應當改為手動寫入表達式,以便控制分子和分母 (x/y)。
語法
AVG(numExpr)
其中:
numExpr 是求值結果為數值的任何表達式。
3、COUNT
此函數計算表達式中包含非空值的行數。該表達式通常為列名,此種情況下,將返回該列中包含非空值的行數。
語法:
COUNT(expr)
其中:
expr 為任意表達式。
4、COUNTDISTINCT
此函數對COUNT 函數進行相異處理。
語法
COUNT(DISTINCT expr)
其中:
expr 為任意表達式。
5、COUNT(*)
此函數計算行數。
語法
COUNT(*)
例如,如果名為 Facts 的表包含 200,000,000 行,示例請求將返回顯示的結果:
SELECT COUNT(*) FROM Facts
6、MAX
此函數計算符合數值表達式參數要求的行的最大值 (最大數值)。
語法
MAX(numExpr)
其中:
numExpr 是求值結果為數值的任何表達式。
7、STDDEV
此函數返回一組值的標准差。返回類型始終為雙精度值。STDEV_SAMP 是STDDEV 的同義詞。
語法
STDDEV([ALL | DISTINCT] numExpr)
其中:
numExpr 是求值結果為數值的任何表達式。
如果指定ALL,則會為數據集內的所有數據計算標准差。
如果指定DISTINCT,則會在計算中忽略所有重復項。
如果未指定任何內容 (默認值),則會考慮所有數據。
8、SUM
此函數計算通過累加符合數值表達式參數要求的所有值得出的總和。
語法
SUM(numExpr)
其中:
numExpr 是求值結果為數值的任何表達式。
9、TOPN
此函數按從 1 到 n 的順序依次排列表達式參數中最大的 n 個值,1 對應於最大的數值。TOPN函數基於結果集內返回的值運行。請求只能包含一個TOPN 表達式。
語法
TOPN(numExpr, integer)
其中:
numExpr 是求值結果為數值的任何表達式。
integer 是任意正整數。它表示結果集內顯示的最高排名的數字,1 為最高排名。
10、MAVG
此函數計算結果集內最后 n 行數據 (包括當前行) 的移動平均值。
第一行的平均值等於第一行的數值表達式。第二行的平均值通過計算前兩行數據的平均值得出。第三行的平均值通過計算前三行數據的平均值得出,依此類推,直到您到達第 n 行為止,第 n 行的平均值根據最后 n 行數據計算得出。
語法
MAVG(numExpr, integer)
其中:
numExpr 是求值結果為數值的任何表達式。
integer 是任意正整數。它表示最后 n 行數據的平均值。
11、MSUM
此函數計算最后 n 行數據 (包括當前行) 的移動總和。
第一行的總和等於第一行的數值表達式。第二行的總和通過計算前兩行數據的總和得出。第三行的總和通過計算前三行數據的總和得出,依此類推。在您到達第 n 行以后,根據最后 n 行數據計算總和。
語法
MSUM(numExpr, integer)
其中:
numExpr 是求值結果為數值的任何表達式。
integer 是任意正整數。它表示最后 n 行數據的平均值。
12、RSUM
此函數根據迄今為止出現的記錄來計算運行總和。第一行的總和等於第一行的數值表達式。第二行的總和通過計算前兩行數據的總和得出。第三行的總和通過計算前三行數據的總和得出,依此類推。
語法
RSUM(numExpr)
其中:
numExpr 是求值結果為數值的任何表達式。
在 Answers 中,您還可以使用以下替代語法:
RSUM(expression1 [BY expression2[, expression3[, ...]]])
其中:
expression1, expression2, expression3 ... 可以是任何列引用或列引用中的算術表達式。
BY 子句導致RSUM 計算從任何BY 列值不同於上一行的行重新開始。
13、RCOUNT
此函數采用一組記錄作為輸入,並計算迄今為止出現的記錄數量。
語法
RCOUNT(expr)
其中:
expr 是任何數據類型的表達式。
在 Answers 中,您還可以使用以下替代語法:
RCOUNT(expression1 [BY expression2[, expression3[, ...]]])
其中:
expression1, expression2, expression3 ... 可以是任何列引用或列引用中的算術表達式。
BY 子句導致RCOUNT 計算從任何BY 列值不同於上一行的行重新開始。
14、BIT_LENGTH
此函數返回指定字符串的長度,以位為單位。每個 Unicode 字符長度為 2 個字節 (相當於 16位)。
語法
BIT_LENGTH(strExpr)
其中:
strExpr 是任意求值結果為字符串的表達式。
15、CHAR_LENGTH
此函數返回指定字符串的長度,以字符數為單位。字符串的長度不包括前導和尾隨空白字符。
語法
CHAR_LENGTH(strExpr)
其中:
strExpr 是任意求值結果為字符串的表達式。
16、CONCAT
此函數有兩種形式。第一種形式連接兩個字符串。第二種形式使用字符串連接字符連接兩個以上的字符串。
第 1 種形式 (連接兩個字符串) 的語法
CONCAT(strExpr1, strExpr2)
其中:
strExprs 是求值結果為逗號分隔字符串的表達式。
此示例請求返回顯示的結果。
SELECT DISTINCT CONCAT('abc', 'def') FROM employee
CONCAT('abc', 'def')
結果:
abcdef
第 2 種形式 (連接兩個以上字符串) 的語法
CONCAT(strExpr1, strExpr2 || strExpr3)
其中:
strExprs 是求值結果為逗號分隔字符串和字符串連接運算符 || (雙豎線) 的表達式。CONCAT函數首先將 strExpr2 與 strExpr3 連接在一起以生成中間字符串,然后將 strExpr1 和中間字符串連接在一起以生成最終字符串。
此示例請求返回顯示的結果。
SELECT DISTINCT CONCAT('abc','def' || 'ghi') FROM employee
結果:
Abcdefghi
17、LEFT
返回從字符串左側算起的指定字符數。
語法
LEFT(strExpr, integer)
其中:
strExpr 是任意求值結果為字符串的表達式。
integer 是任意正整數,它表示從字符串左側開始返回的字符數。
18、LENGTH
此函數返回指定字符串的長度,以字符數為單位。返回的長度不包括任何尾隨空白字符。
語法
LENGTH(strExpr)
其中:
strExpr 是任意求值結果為字符串的表達式。
19、LOCATE
此函數返回字符串在另一個字符串中的數字位置。如果在要在其中執行搜索的字符串中未找到要搜索的字符串,該函數將返回值 0。
語法
LOCATE(strExpr1, strExpr2)
其中:
strExpr1 是任意求值結果為字符串的表達式。它標識要搜索的字符串。
strExpr2 是任意求值結果為字符串的表達式。它標識要在其中執行搜索的字符串。
此示例返回 4 作為字母 d 在字符串 abcdef 中的數字位置:
Locate('d', 'abcdef')
此示例返回 0,因為在要在其中執行搜索的字符串中找不到字母 g。
Locate('g', 'abcdef')
20、LOWER
此函數將字符串轉換成小寫字母。
語法
LOWER(strExpr)
其中:
strExpr 是任意求值結果為字符串的表達式。
21、REPEAT
此函數將指定的表達式重復 n 次。
語法
REPEAT(strExpr, integer)
其中:
strExpr 是任意求值結果為字符串的表達式。
integer 是任意正整數,它表示字符串的重復次數。
此示例重復 abc 四次:
REPEAT('abc', 4)
22、REPLACE
此函數將指定字符表達式中的一個或多個字符替換為一個或多個其他字符。
語法
REPLACE(strExpr1, strExpr2, strExpr3)
其中:
strExpr1 是任意求值結果為字符串的表達式。這是要替換其中字符的字符串。
strExpr2 是任意求值結果為字符串的表達式。第二個字符串標識要從第一個字符串中替換掉的字符。
strExpr3 是任意求值結果為字符串的表達式。第三個字符串指定要替換到第一個字符串中的字符。
在字符串 abcd1234 中,字符 123 將替換為字符串 zz:
Replace('abcd1234', '123', 'zz')
結果:
abcdzz423、RIGHT
此函數返回從字符串右側算起的指定字符數。
語法
RIGHT(strExpr, integer)
其中:
strExpr 是任意求值結果為字符串的表達式。
integer 是任意正整數,它表示從字符串右側開始返回的字符數。
此示例返回字符串 123456 最右側的三個字符:
SELECT right('123456', 3) FROM table
結果:
456
24、SUBSTRING
此函數從固定字符數開始在原始字符串中創建新字符串。
語法
SUBSTRING(strExpr FROM starting_position)
其中:
strExpr 是任意求值結果為字符串的表達式。
starting_position 是任意正整數,它表示從字符串左側數起的第幾個字符處開始生成結果。
25、UPPER
此函數將字符串轉換成大寫字母。
語法
UPPER(strExpr)
其中:
strExpr 是任意求值結果為字符串的表達式。
26、ABS
此函數計算數值表達式的絕對值。
語法
ABS(numExpr)
其中:
numExpr 是求值結果為數值的任何表達式。
27、ROUND
此函數將數值表達式的值四舍五入到 n 位精度。
語法
ROUND(numExpr, integer)
其中:
numExpr 是求值結果為數值的任何表達式。
integer 是任意正整數,它表示精度的位數。
以下示例返回的結果為 2.17。
ROUND(2.166000, 2)
28、TRUNCATE
此函數截斷小數,以返回從小數點開始算起的指定位數。
語法
TRUNCATE(numExpr, integer)
其中:
numExpr 是求值結果為數值的任何表達式。
integer 是任意正整數,它表示從小數點位置右側返回的字符數。
以下示例返回 45.12:
TRUNCATE(45.12345, 2)
以下示例返回 25.12:
TRUNCATE(25.126, 2)
29、CURRENT_DATE
此函數返回當前日期。該日期由運行 Oracle BI Server 的系統確定。
語法
CURRENT_DATE
30、CURRENT_TIME
此函數返回當前時間。該時間由運行 Oracle BI Server 的系統確定。
語法
CURRENT_TIME(integer)
其中:
integer 是任意整數,它表示顯示零點幾秒的精度的位數。該參數是可選的;未指定該參數時,函數返回默認精度。
31、CURRENT_TIMESTAMP
此函數返回當前日期/時間戳。該時間戳由運行 Oracle BI Server 的系統確定。
語法
CURRENT_TIMESTAMP(integer)
其中:
integer 是任意整數,它表示顯示零點幾秒的精度的位數。該參數是可選的;未指定該參數時,函數返回默認精度。
32、NOW
此函數返回當前時間戳。NOW 函數等同於CURRENT_TIMESTAMP 函數。
語法
NOW()
33、QUARTER_OF_YEAR
此函數返回一個介於 1 和 4 之間的數字,該數字對應於指定日期位於一年中的哪一季度。
語法
QUARTER_OF_YEAR(dateExpr)
其中:
dateExpr 是求值結果為日期的任意表達式。
34、TIMESTAMPADD
此函數將指定的時間間隔數添加到指定的時間戳,並返回單個時間戳。
最簡單的情況是,此函數根據時間間隔將指定的整數值與時間戳的適當組件相加。加一個星期時,會轉換為加七天;而加一個季度時,會轉換為加三個月。負的整數值會導致減去時間 (例如將時間倒推)。
指定的組件溢出 (例如超過 60 秒、24 小時、12 個月等) 時,會迫使在下一個組件中加上合適的時間量。例如,與時間戳的天組件相加時,此函數會考慮溢出,並且會計算特定月中的天數 (對於閏年,二月份會按 29 天計算)。
與時間戳的月組件相加時,此函數會驗證生成的時間戳中的天組件是否有足夠的天數。例如,將1 個月與 2000-05-31 相加不會生成 2000-06-31,因為六月份沒有 31 號。此函數會將天組件減少到該月的最后一天,在本示例中即為 2000-06-30。
對於月組件為二月並且天組件為 29 (即閏年中二月的最后一天) 的時間戳,與該時間戳的年組件相加時,會發生類似的問題。如果生成的時間戳不是閏年,則該函數會將天組件減少到 28。
這些操作符合 Microsoft SQL Server 以及 Oracle 數據庫的本機 OCI 接口的行為。
語法
TIMESTAMPADD(interval, intExpr, timestamp)
其中:
interval 是指定的時間間隔。有效值為:
· SQL_TSI_SECOND
· SQL_TSI_MINUTE
· SQL_TSI_HOUR
· SQL_TSI_DAY
· SQL_TSI_WEEK
· SQL_TSI_MONTH
· SQL_TSI_QUARTER
· SQL_TSI_YEAR
intExpr 是求值結果為整數值的任意表達式。