日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)OceanBase教程:OceanBase 數(shù)據(jù)類型轉(zhuǎn)換

通常,表達(dá)式不能包含不同數(shù)據(jù)類型的值。但是為了使表達(dá)式能夠進(jìn)行計(jì)算,OceanBase 支持從一個(gè)數(shù)據(jù)類型到另一個(gè)數(shù)據(jù)類型的值的隱式轉(zhuǎn)換和顯式轉(zhuǎn)換。

隱式數(shù)據(jù)類型轉(zhuǎn)換

當(dāng)轉(zhuǎn)換有意義時(shí),OceanBase 數(shù)據(jù)庫會自動將一個(gè)值從一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型。隱式數(shù)據(jù)類型的轉(zhuǎn)換規(guī)則:

  • INSERT 和 UPDATE 操作時(shí),OceanBase 把變量值轉(zhuǎn)換成列類型。
  • SELECT FROM 操作時(shí),OceanBase 把列數(shù)據(jù)類型轉(zhuǎn)換成目標(biāo)變量類型。
  • 字符值和數(shù)字值比較時(shí),OceanBase 把字符值轉(zhuǎn)換成數(shù)字值。

  • 在處理數(shù)值時(shí),OceanBase 會調(diào)整精度和小數(shù)位數(shù)。由此產(chǎn)生的數(shù)字?jǐn)?shù)據(jù)類型與基礎(chǔ)表中找到的數(shù)字?jǐn)?shù)據(jù)類型不同。

  • 字符值或數(shù)值和浮點(diǎn)數(shù)值之間的轉(zhuǎn)換可以是不精確的,因?yàn)樽址愋秃蛿?shù)量使用十進(jìn)制精度來表示數(shù)值,浮點(diǎn)數(shù)使用二進(jìn)制精度。

  • 當(dāng)一個(gè) CLOB 值轉(zhuǎn)換為一個(gè)字符類型如 VARCHAR2,或 BLOB 轉(zhuǎn)換為 RAW 時(shí)。如果要轉(zhuǎn)換的數(shù)據(jù)大于目標(biāo)數(shù)據(jù)類型,那么數(shù)據(jù)庫會返回一個(gè)錯誤。

  • 在從時(shí)間戳值轉(zhuǎn)換為 DATE 值的過程中,時(shí)間戳值的小數(shù)秒部分被截?cái)?,且時(shí)間戳值的小數(shù)秒部分進(jìn)行四舍五入。

  • 從 BINARY_FLOAT 轉(zhuǎn)換為 BINARY_DOUBLE 是準(zhǔn)確的。

  • 如果 BINARY_DOUBLE 的精度位數(shù)超出了 BINARY_FLOAT 支持的位數(shù),BINARY_DOUBLE 轉(zhuǎn)換為 BINARY_FLOAT 是不精確的。

  • 當(dāng)將字符值與 DATE 值進(jìn)行比較時(shí),OceanBase 將字符數(shù)據(jù)轉(zhuǎn)換為 DATE。

  • 賦值操作時(shí),OceanBase 把等號右邊的值轉(zhuǎn)換成左邊賦值目標(biāo)數(shù)據(jù)類型。

  • 連接操作時(shí),OceanBase 把非字符類型轉(zhuǎn)換成字符類型或國家字符類型。

隱式數(shù)據(jù)類型轉(zhuǎn)換矩陣

下表顯示了所有的隱式數(shù)據(jù)類型轉(zhuǎn)換,您不需要考慮轉(zhuǎn)換的方向或轉(zhuǎn)換的上下文?!?”表示不支持轉(zhuǎn)換。

CHAR

-

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

VARCHAR2

Yes

-

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

-

NCHAR

Yes

Yes

-

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

-

NVARCHAR2

Yes

Yes

Yes

-

Yes

Yes

Yes

Yes

Yes

Yes

Yes

-

DATE

Yes

Yes

Yes

Yes

-

-

-

-

-

-

-

-

DATETIME / INTERVAL

Yes

Yes

Yes

Yes

-

-

-

-

-

-

-

-

NUMBER

Yes

Yes

Yes

Yes

-

-

-

Yes

Yes

-

-

-

BINARY_FLOAT

Yes

Yes

Yes

Yes

-

-

Yes

-

Yes

-

-

-

BINARY_DOUBLE

Yes

Yes

Yes

Yes

-

-

Yes

Yes

-

-

-

-

RAW

Yes

Yes

Yes

Yes

-

Yes

1

-

-

-

-

Yes

-

CLOB

Yes

Yes

Yes

Yes

-

-

-

-

-

-

-

Yes

BLOB

-

-

-

-

-

-

-

-

-

Yes

-

-

數(shù)據(jù)類型CHARVARCHAR2NCHARNVARCHAR2DATEDATETIME / INTERVALNUMBERBINARY_FLOATBINARY_DOUBLERAWCLOBBLOB

1 您不能直接將 RAW 轉(zhuǎn)換為 INTERVAL,但是可以使用 UTL_RAW.CAST_TO_VARCHAR2([RAW]) 將RAW 轉(zhuǎn)換為 VARCHAR2,然后將所得的 VARCHAR2 值轉(zhuǎn)換為 INTERVAL。

不同字符類型之間隱式轉(zhuǎn)換的方向

from CHAR

-

VARCHAR2

NCHAR

NVARCHAR2

from VARCHAR2

VARCHAR2

-

NVARCHAR2

NVARCHAR2

from NCHAR

NCHAR

NCHAR

-

NCHAR2

from NVARCHAR2

NVARCHAR2

NVARCHAR2

NVARCHAR2

-

數(shù)據(jù)類型TO_CHARTO_VARCHAR2TO_NCHARTO_NVARCHAR2

隱式數(shù)據(jù)類型轉(zhuǎn)換示例

執(zhí)行以下語句:


SELECT 5 * 10 + 'james' FROM DUAL;

語句執(zhí)行失敗,且您收到以下報(bào)錯:


invalid number

這是由于 OceanBase 使用了隱式數(shù)據(jù)類型轉(zhuǎn)換,將 'james' 轉(zhuǎn)換為數(shù)字類型,但是轉(zhuǎn)換失敗。

本示例將字符串 '2' 從 CHAR 數(shù)據(jù)類型隱式轉(zhuǎn)換為了數(shù)字?jǐn)?shù)據(jù)類型 2,計(jì)算結(jié)果為 52。

執(zhí)行以下語句:


SELECT 5 * 10 + '2' FROM  DUAL;

查詢結(jié)果如下:


+---------------------+
|     5 * 10 + '2'    |     
+---------------------+
|         52          |  
+---------------------+

顯式數(shù)據(jù)類型轉(zhuǎn)換

您可以使用 SQL 轉(zhuǎn)換函數(shù)轉(zhuǎn)換數(shù)據(jù)類型,SQL 函數(shù)顯式轉(zhuǎn)換一個(gè)數(shù)據(jù)類型為另一個(gè)數(shù)據(jù)類型。

顯示類型轉(zhuǎn)換矩陣

TO_CHAR(char . ) 、TO_NCHAR(char . )

TO_NUMBER

TO_DATE、TO_TIMESTAMP、TO_TIMESTAMP_TZ、TO_YMINTERVAL、TO_DSINTERVAL

HEXTORAW

TO_CLOB

TO_BINARY_FLOAT

TO_BINARY_DOUBLE

TO_CHAR(number) 、TO_NCHAR(number)

--

TO_DATE、NUMTOYM_INTERVAL、NUMTOOLS_INTERVAL

--

--

TO_BINARY_FLOAT

TO_BINARY_DOUBLE

TO_CHAR(date ) 、TO_NCHAR(date)

--

--

--

--

--

--

RAWTOHEX、RAWTONHEX

--

--

--

TO_BLOB

--

--

TO_CHAR、TO_NCHAR

--

--

--

TO_CLOB

--

--

TO_CHAR(char . ) 、TO_NCHAR(char . )

TO_NUMBER

--

--

--

TO_BINARY_FLOAT

TO_BINARY_DOUBLE

TO_CHAR(char . ) 、TO_NCHAR(char . )

TO_NUMBER

--

--

--

TO_BINARY_FLOAT

TO_BINARY_DOUBLE

數(shù)據(jù)類型To CHAR、VARCHAR2、NCHAR、NVARCHAR2To NUMBERTo Datetime/ IntervalTo RAWTo CLOB、BLOBTo_BINARY_FLOATTo_BINARY_DOUBLE
From CHAR、VARCHAR2、NCHAR、NVARCHAR2
From NUMBER
From Datetime/Interval
From RAW
From CLOB、BLOB
From BINARY_FLOAT
From BINARY_DOUBLE

顯式數(shù)據(jù)類型轉(zhuǎn)換示例

當(dāng)前的時(shí)間通過 TO_CHAR 函數(shù)顯式轉(zhuǎn)換為想要的格式輸出。

執(zhí)行以下語句:


SELECT TO_CHAR(SYSDATE, 'YYYY_MM_DD') FROM DUAL;

查詢結(jié)果如下:


+-------------------------------+
| TO_CHAR(SYSDATE,'YYYY_MM_DD') |
+-------------------------------+
| 2020_02_27                    |
+-------------------------------+

新聞名稱:創(chuàng)新互聯(lián)OceanBase教程:OceanBase 數(shù)據(jù)類型轉(zhuǎn)換
轉(zhuǎn)載注明:http://www.dlmjj.cn/article/ccieddd.html