今天在做051的96題時遇見了NVL2(exp 1,exp 2,exp 3)這個函數,他需要三個參數,其中exp 1 可以是任何數據類型,而exp 2和exp 3 數據類型有時會出現不一致,這是oracle就會進行隱式轉換。
隱式數據類型轉換將按照下面說明的規則進行。
顯式數據類型轉換可通過使用轉換函數來執行。轉換函數用於將一種數據類型的值轉換爲另一種數據類型的值。
通常,函數名稱的格式遵循data type TO data type慣例。
第一個數據類型是輸入數據類型,第二個數據類型是輸出數據類型。
注:儘管可以使用隱式數據類型轉換,但仍建議執行顯式數據類型轉換以確保 SQL 語句的可靠性。
隱式數據類型轉換
在表達式中,Oracle Server 可以自動執行以下轉換:
從 VARCHAR2 或CHAR隱式轉換爲NUMBER
從VARCHAR2 或CHAR隱式轉換爲DATE
Oracle Server 可以在表達式中自動執行數據類型轉換。例如,表達式hire_date > '01-JAN-90' 將導致字符串'01-JAN-90' 隱式轉換爲一個日期。因此,表達式中的VARCHAR2 或CHAR 值可以隱式轉換爲數字或日期數據類型。
對於表達式計算,Oracle Server 可以自動執行以下轉換:
從NUMBER隱式轉換爲VARCHAR2 或CHAR
從 DATE隱式轉換爲VARCHAR2 或CHAR
通常,Oracle Server 在需要進行數據類型轉換時使用適用於表達式的規則。例如,表達式grade = 2 將導致數字2 隱式轉換爲字符串“2”,因爲grade 爲CHAR(2)列。
注:只有字符串代表一個有效數字時,CHAR 到NUMBER 的轉換才能成功。
顯式數據類型轉換
SQL 提供了以下三種函數,用於將值從一種數據類型轉換爲另一種數據類型:
TO_CHAR( number | date,[ fmt ],[nlsparams])
按照格式樣式 fmt ,將數字或日期值轉換爲 VARCHAR2 字符串。
數字轉換:nlsparams 參數指定以下由數字格式元素返回的字符:
-- 小數點字符
--組分隔符
--本地貨幣符號
--國際貨幣符號
如果省略 nlsparams 或者任何其它參數, 則該函數將在會話中使用默認參數值。
日期轉換:nlsparams 參數指定返回的月 和日名稱以及縮寫所用的語言。如果省略此 參數,則該函數將在會話中使用默認的日期 語言。
TO_NUMBER(char,[fmt], [nlsparams] )
按照可選格式樣式 fmt 指定的格式,將包含數字的字符串轉換爲數字。
對於數字轉換,nlsparams 參數在此函數中的作用與它在 TO_ CHAR 函數中的作用相同。
TO_DATE(char ,[fmt ],[ nlsparams])
按照指定的 fmt ,將代表日期的字符串轉換 爲日期值。如果省略 fmt ,則格式爲 DD-MON-YY 。
對於日期轉換,nlsparams 參數在此函數中的作用與它在 TO_ CHAR 函數中的作用相同。