除了oracle 資料型別,還可以使用美國國家標準協會(ansi) 、db2 和sql/ds 資料型別
定義oracle db 中表的列。但是,oracle server 會在內部將這些資料型別轉換為oracle
資料型別。
在某些情況下,oracle server 會收到資料型別與預期的資料型別不同的資料。發生這種情
況時,oracle server 可自動將該資料轉換為預期的資料型別。這種資料型別轉換可以由
oracle server 隱式完成,也可以由使用者顯式完成。
隱式資料型別轉換將按照下面說明的規則進行。
顯式資料型別轉換可通過使用轉換函式來執行。轉換函式用於將一種資料型別的值轉換為
另一種資料型別的值。
通常,函式名稱的格式遵循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 提供了以下三種函式,用於將值從一種資料型別轉換為另一種資料型別:
按照格式樣式 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 函式中的作用相同。
Oracle DB 隱式和顯式資料型別轉換
除了 oracle 資料型別,還可以使用美國國家標準協會 ansi db2 和sql ds 資料型別 定義oracle db 中表的列。但是,oracle server 會在內部將這些資料型別轉換為oracle 資料型別。在某些情況下,oracle server 會收到資料型別與預期的資料型別不同的...
顯示提交 和 隱式提交
我發現有人經常 濫用 oracle 中的commit和rollback的用法。首先,大家要清楚 commit rollback,都是用在執行 dml 語句之後的。所謂 dml 語句就是 insert delete update select 而 create table view 之類的語句,是 d...
顯示呼叫和隱式呼叫
使用類名呼叫時顯式呼叫。c 中,顯式介面只能使用介面呼叫,隱式介面使用類和介面呼叫皆可。c 首先動態庫分為顯示呼叫和隱式呼叫,這個的區別呢,顯示呼叫 需要loadlibray和freelibrary,隱式呼叫不需要loadlibrary和freelibrary,只是需要匯入相關的lib檔案,因此,如...