Oracle DB 隱式和顯示資料型別轉換

2021-08-17 05:46:43 字數 2044 閱讀 5947

除了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檔案,因此,如...