ORACLE 運行環境
openGauss 運行環境
0、前置知識
ORACLE:DUMP()函數用于返回指定表達式的數據類型、字節長度及內部存儲表示的詳細信息
SELECT DUMP(123) FROM DUAL; -- Typ=2 Len=3: 194,2,24
SELECT DUMP('123') FROM DUAL;-- Typ=96 Len=3: 49,50,51
-- ASCII值(48到57,對應0~9)
?-- 局限?:需先獲取變量值,且不適用于未賦值的變量。
-- 返回值是一個VARCHAR2字符串,格式為:Typ=<類型代碼> Len=<長度> [附加信息]: <內部存儲值>
---- 表示數據的內部類型編碼,常見代碼包括:
---- 96:字符類型(如CHAR、VARCHAR2)
---- 2:數值類型(NUMBER)
---- 12:日期類型(DATE)
---- 23:原始二進制數據(RAW)
---- 69:行標識符(ROWID)
SELECT REGEXP_SUBSTR(DUMP('123'), -- 待解析的字符串'Typ=([0-9]+)', -- 正則表達式:匹配 'Typ=' 后的數字1, -- 從第1個字符開始搜索1, -- 第1次匹配NULL, -- 默認匹配選項1 -- 返回第1個捕獲組(即括號內的數字)) AS typ_value
FROM DUAL; -- 96
OpenGauss:pg_typeof()返回值的實際數據類型,pg_column_size()返回值占用的存儲字節數
SELECT pg_typeof(123),pg_column_size(123); -- integer,4
SELECT pg_typeof('123'::VARCHAR ),pg_column_size('123'::VARCHAR ); -- character varying,7
-- pg_typeof():返回值的實際數據類型
-- pg_column_size():返回值占用的存儲字節數select pg_column_size(20250529),pg_column_size('20250529') -- 4,9
1、ORACLE中,使用TO_CHAR函數將DATE/TIMESTAMP轉化為YYYYMMDD格式的字符串,然后與數字日期/字符日期比較
2、openGauss中,使用TO_CHAR函數將DATE/TIMESTAMP轉化為YYYYMMDD格式的字符串,然后與數字日期/字符日期比較
3、openGauss中,DATE/TIMESTAMP直接與數字日期/字符日期比較
4、Oracle中,DATE/TIMESTAMP直接與數字日期/字符日期比較
類型1:
類型2:
類型3:
類型4: