转换函数

本文介绍了转换函数的语法、参数以及示例等内容。

TO_TMINTERVAL

描述

该函数将CHARVARCHAR2NCHARNVARCHAR2数据类型的字符串转换为INTERVAL YEAR TO MONTH值。

语法

TO_YMINTERVAL(char)

参数

参数

说明

char

CHARVARCHAR2NCHARNVARCHAR2类型,为要转换的字符串。

返回类型

返回INTERVAL YEAR TO MONTH类型数据。

示例

SELECT to_yminterval('2016-1') FROM DUAL;
 to_yminterval 
---------------
 +2016-01

TO_DAINTERVAL

描述

该函数将CHARVARCHAR2NCHARNVARCHAR2数据类型的字符串转换为INTERVAL DAY TO SECOND值。

语法

TO_DSINTERVAL(char[, nlsparam])

参数

参数

说明

char

CHARVARCHAR2NCHARNVARCHAR2类型,为要转换的字符串。

nlsparam

可选参数,此函数中可以指定的唯一有效nlsparam是NLS_NUMERIC_CHARACTERS,采用以下形式:NLS_NUMERIC_HARACTERS=“dg”,其中d和g分别表示十进制字符和组分隔符。两个字符都不能是空格。

返回类型

返回INTERVAL DAY TO SECOND类型数据。

示例

SELECT to_dsinterval('1 1:1:00') FROM DUAL;
 to_dsinterval 
---------------
 +01 01:01:00

TO_TIMESTAMP_TZ

描述

该函数将CHARVARCHAR2NCHARNVARCHAR2数据类型的char转换为TIMESTAMP WITH TIME ZONE数据类型的值。

语法

TO_TIMESTAMP_TZ(char[, fmt][, 'nlsparam'])

参数

参数

说明

char

用于转换为TIMESTAMP WITH TIME ZONE类型数据的字符串。

fmt

用于指定TIMESTAMP WITH TIME ZONE类型结果的格式。

nlsparam

可选参数,用来指定返回的月份和日期所使用的语言。

返回类型

返回TIMESTAMP WITH TIME ZONE类型数据。

NUMTODSAINTERVAL

描述

该函数将n转换为INTERVAL DAY TO SECOND类型结果。

说明

interval_unit不区分大小写。忽略括号内的前导值和尾随值。默认情况下,返回的精度为9。

语法

NUMTODSINTERVAL(n,interval_unit)

参数

参数

说明

n

NUMBER类型数据或者是可以隐式转换为NUMBER的表达式。

interval_unit

CHARVARCHAR2NCHARNVARCHAR2数据类型,interval_unit的值指定n的单位,需要时可以解析为'DAY'、'HOUR'、'MINUTE'、'SECOND'之一的字符串。

返回类型

返回INTERVAL DAY TO SECOND类型数据。

示例

SELECT numtodsinterval('3.123456789','hour') FROM DUAL;
  numtodsinterval   
--------------------
 +00 03:07:24.44444

NUMTOYMINTERVAL

描述

该函数将n转换为INTERVAL YEAR TO MONTH类型结果。

说明

interval_unit不区分大小写。忽略括号内的前导值和尾随值。默认情况下,返回的精度为9。

语法

NUMTOYMINTERVAL(n,interval_unit)

参数

参数

说明

n

NUMBER类型数据或者是可以隐式转换为NUMBER的表达式。

interval_unit

CHARVARCHAR2NCHARNVARCHAR2数据类型,interval_unit的值指定n的单位,需要时可以解析为'YEAR'、'MONTH'之一的字符串。

返回类型

返回INTERVAL YEAR TO MONTH类型数据。

示例

SELECT numtoyminterval('3.123456789','year') FROM DUAL;
 numtoyminterval 
-----------------
 +03-01

UNISTR

描述

UNISTR将解析为字符数据的文本或表达式作为其参数,并以国家字符集形式返回。数据库的国家字符集可以是AL16、UTF16或UTF8。

UNISTR允许您指定字符串中字符的Unicode编码值,从而提供对Unicode字符串文字的支持。这对于将数据插入NCHAR列非常有用。

Unicode编码值的格式为\xxxx,其中xxxx是UCS-2编码格式中字符的十六进制值。补充字符被编码为两个代码单元,第一个来自高替代范围(U+D800到U+DBFF),第二个来自低替代范围(U+DC00到U+DFFF)。若要在字符串本身中包含反斜杠,请在其前面加上另一个反斜杠(\\)。便于移植和保存数据。

语法

UNISTR(string)

参数

参数

说明

string

字符串类型,指定用于转换的字符串。

返回类型

返回字符串类型数据。

示例

SELECT UNISTR('abc\00e5\00f1\00f6') FROM DUAL;
 unistr 
--------
 abcåñö

TO_SINGLE_BYTE

描述

TO_SINGLE_BYTE返回char,并将其所有多字节字符转换为相应的单字节字符。

char中任何没有单字节等效字符的多字节字符在输出中显示为多字节字符。只有当数据库字符集同时包含单字节和多字节字符时,此函数才有用。

此函数不直接支持CLOB数据。但是,CLOB可以通过隐式数据转换作为参数传入。

语法

TO_SINGLE_BYTE(char)

参数

参数

说明

char

char的数据类型可以是CHAR、VARCHAR2、NCHAR或NVARCHAR2。

返回类型

返回的值与char的数据类型相同。

示例

SELECT to_single_byte('123$test') FROM DUAL;
 to_single_byte 
----------------
 123$test

TO_MULTI_BYTE

描述

TO_MULTI_BYTE返回char,将其所有单字节字符转换为相应的多字节字符。

char中任何没有多字节等效字符的单字节字符在输出字符串中显示为单字节字符。只有当数据库字符集同时包含单字节和多字节字符时,此函数才有用。

此函数不直接支持CLOB数据。但是,CLOB可以通过隐式数据转换作为参数传入。

语法

TO_MULTI_BYTE(char)

参数

参数

说明

char

char的数据类型可以是CHAR、VARCHAR2、NCHAR或NVARCHAR2。

返回类型

返回的值与char的数据类型相同。

示例

select to_multi_byte('Hello'::text) from dual;
 to_multi_byte 
---------------
 Hello

TO_CLOB

描述

TO_CLOB(字符)将LOB列或其他字符串中的NCLOB值转换为CLOB值。

语法

TO_CLOB(lob_column | char)

参数

参数

说明

lob_column

lob_column是NCLOB类型的列。

char

char可以是CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOB或NCLOB中的任何一种数据类型。在PL/SQL包中,可以使用TO_CLOB(字符)函数将RAW、CHAR、VARCHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOB或NCLOB值转换为CLOB或NCLOB值。

返回类型

返回CLOB类型数据。

示例

create table Employee_to_clob(ID  VARCHAR2(4 BYTE), First_Name         VARCHAR2(10 BYTE));
insert into Employee_to_clob(ID,  First_Name) values ('01','Jason');

select to_clob(first_name) from Employee_to_clob;
 to_clob 
---------
 Jason

RAWTOHEX

描述

RAWTOHEX将raw转换为包含其十六进制表示的字符值。

作为SQL内置函数,如果参数的数据类型不是RAW,则此函数会将使用某些数据字节数表示的参数值转换为具有相同数据字节数的RAW值。数据本身不会以任何方式进行修改,但数据类型会重新转换为RAW数据类型。

语法

RAWTOHEX(raw)

参数

参数

说明

raw

变量可以为除LONG、LONG RAW、CLOB、NCLOB、BLOB或BFILE之外的任何标量数据类型的参数。

返回类型

此函数返回一个VARCHAR2值,该值具有组成原始值的字节的十六进制表示形式。每个字节由两个十六进制数字表示。

示例

SELECT rawtohex('hello world'::varchar) FROM DUAL;
        rawtohex        
------------------------
 68656c6c6f20776f726c64

HEXTORAW

描述

HEXTORAW将CHAR、VARCHAR2、NCHAR或NVARCHAR2数据类型中包含十六进制数字的字符转换为RAW类型数据。

说明

此函数不直接支持CLOB数据。但是,CLOB可以通过隐式数据转换作为参数传入。

语法

HEXTORAW(char)

参数

参数

说明

char

可以为CHAR、VARCHAR2、NCHAR或NVARCHAR2数据类型。

返回类型

返回RAW类型数据。

示例

SELECT hextoraw(rawtohex('hello world'::bpchar)) FROM DUAL;
         hextoraw         
--------------------------
 \x68656c6c6f20776f726c64

ASCIISTR

描述

ASCIISTR将任何字符集中的字符串或解析为字符串的表达式作为其参数,并返回数据库字符集中字符串的ASCII版本。非ASCII字符转换为\xxxx形式,其中xxxx表示UTF-16代码单元。

语法

ASCIISTR(char)

参数

参数

说明

char

可以为任何字符集中的字符串或解析为字符串的表达式。

返回类型

返回数据库字符集中字符串的ASCII版本。

示例

SELECT ASCIISTR('WÈÐńėśĎày') FROM DUAL;
               asciistr                
---------------------------------------
 W\00C8\00D0\0144\0117\015B\010E\00E0y