ITPub博客

首页 > 数据库 > Oracle > Oracle   SQL函数(四-1)

Oracle   SQL函数(四-1)

Oracle 作者:家家快乐 时间:2013-12-07 21:33:10 0 删除 编辑

 

 转换函数

偶尔大体需要将一个值从一种数据范例转换为另外一种数据范例。例如,产物价格本来是以数字花式保存的(例如,1346.95),想将其转换成包含美圆和逗号的情势($1,346.95)。转换函数可以将一个值从一种数据范例转换为另外一种数据范例。

表1-3列出了一些常常利用的转换函数。

表1-3  转 换 函 

函    

说    

ASCIISTR(x)

将x转换为一个ASCII字符串,此中x可所以由字符散开的随便字符构成的字符串

BIN_TO_NUM(x)

将二进制数字x转换为NUMBER范例

CAST(x AS type)

将x转换为type所指定的兼容数据库范例

CHARTOROWID(x)

将x转换为ROWID范例

COMPOSE(x)

将x转换为一个Unicode编码的字符串,字符串利用与x完齐相通的字符散。Unicode利用2字节字符散,可以默示超越65 000个字符;也可以用于默示非英语字符

CONVERT(x, 

source_char, dest_char)

将x从source_char转换为dest_char

DECODE

(x, search, result, default)

将x与search中的值停止比较;假定相当,DECODE() 就返回result的值,否则返回default的值

DECOMPOSE(x)

先对x停止分解,再将其转换为一个Unicode字符串,字符串利用与x完齐相通的字符散

HEXTORAW(x)

将包含十六进制数字(基数为16)的字符x转换为一个二进制数字(RAW)。这个函数返回RAW范例的数字

NUMTODSINTERVAL(x)

将数字x转换为一个INTERVAL DAY TO SECOND范例。下一章将会介绍有关日期和时间隔断的函数

NUMTOYMINTERVAL(x)

将数字x转换为一个INTERVAL YEAR TO MONTH范例

RAWTOHEX(x)

将二进制数字(RAW)x转换为一个VARCHAR2范例的字符串,值为等价的十六进制数字

RAWTONHEX(x)

将二进制数字(RAW)x转换为一个NVARCHAR2范例的字符串,值为等价的十六进制数字。NVARCHAR2范例用于以国家字符散花式存储字符串

ROWIDTOCHAR(x)

将ROWID x转换为一个VARCHAR2 字符串

ROWIDTONCHAR(x)

将ROWID x转换为一个NVARCHAR2 字符串

TO_BINARY_DOUBLE(x)

将x转换为一个BINARY_DOUBLE范例。(此函数是Oracle Database 10g新增的一个函数。)

TO_BINARY_FLOAT(x)

将x转换为一个BINARY_FLOAT范例。(此函数是Oracle Database 10g新增的一个函数。)

TO_BLOB(x)

将x转换为一个二进制年夜对象(BLOB)范例。BLOB用往存储年夜量的二进制数据。第14章将介绍年夜对象的知识

TO_CHAR(x[, format])

将x转换为一个VARCHAR2字符串。可以指定一个可选参数format往说明x的花式

TO_CLOB(x)

将x转换为一个字符年夜对象(CLOB)。CLOB用于保存年夜量的字符数据

TO_DATE(x[, format])

将x转换为一个DATE范例

TO_DSINTERVAL(x)

将x转换为一个INTERVAL DAY TO SECOND范例

TO_MULTI_BYTE(x)

将x中的单字节字符转换为对应的多字节字符。返回范例与x的范例相通

TO_NCHAR(x)

将数据库字符散开的x转换为一个NVARCHAR2字符串

TO_NCLOB(x)

将x转换为一个NCLOB范例。NCLOB用于保存年夜量的国家语行字符数据

TO_NUMBER(x[, format])

将x转换为一个NUMBER范例

TO_SINGLE_BYTE(x)

将x中的多字节字符转换为对应的单字节字符。返回范例与x的范例相通

TO_TIMESTAMP(x)

将字符串x转换为一个TIMESTAMP范例

TO_TIMESTAMP_TZ(x)

将字符串x转换为一个TIMESTAMP WITH TIME ZONE范例

TO_YMINTERVAL(x)

将字符串x转换为一个INTERVAL YEAR TO MONTH范例

TRANSLATE(x,

from_string,to_string)

将x中通盘的from_string转换为to_string

UNISTR(x)

将x中的字符转换为国家语行字符散(NCHAR)

1. TO_CHAR()

TO_CHAR(x [, format])函数用于将x转换为一个字符串,也可以指定一个可选的参数format往说明x的花式。布局format与决于x是数字还是日期。下里往看几个利用TO_CHAR()函数将数字转换为字符串的简单例子。下里这个查询将12345.67转换为一个字符串:

SELECT TO_CHAR(12345.67)

FROM dual;

TO_CHAR(12345.67)

---------

12345. 67

下里这个查询利用TO_CHAR()函数将12345678.90转换为一个字符串,并指明要利用99,999.99花式。TO_CHAR()函数返回的字符串中的成效在千分位有一个逗号把数字合并开往:

SELECT TO_CHAR(12345.67, "99,999.99")

FROM dual;

TO_CHAR(12345.67, "99,999.99")

--------------------

12,345. 67

format字符串是可以传递给TO_CHAR()函数的一个可选参数,该参数可以影响TO_CHAR()函数的返回值。可用的部份参数如表1-4所示。

表1-4  format参数

参    

格 式 例 

说    

999 

返回指定位置处的数字,假定该值为负数,前里减一个负号

0999

9990

0999:返回一个数字,前里补0

9990:返回一个数字,后里补0

999.99 

在指定位置处返回一个小数点

9,999 

在指定位置处返回一个逗号

$999 

在数字开头返回一个美圆符号

B9.99 

假定一个定点数的整数部份为0,就在整数部份返回空格

C999 

在指定位置处返回ISO货币符号,这个货币符号起原于由DBA设置的数据库参数NLS_ISO_CURRENCY 

9D99 

在指定位置处返回小数点符号,该符号起原于NLS_NUMERIC_CHARACTER数据库参数的设置(默许值为小数点字符) 

EEEE

9.99EEEE

返回利用科学计数法默示的数字

FM 

FM90.9 

删除数字开头和结尾处的空格

9G999 

在指定位置处返回组合并符符号,该符号起原于NLS_NUMERIC_CHARACTER数据库参数的设置

L999 

在指定位置处返回本地货币符号,该符号起原于NLS_CURRENCY 数据库参数的设置

MI 

999MI 

负数则返回这个负数,后里减上一个负号(减号);正数则返回这个正数,后里减上一个空格

PR 

999PR 

负数则返回这个负数,并将其包含在一对尖括号(< >)中;正数则返回这个正数,并在前后各减上一个空格

RN

rn

RN

rn

返回这个数字的罗马数字情势。RN返回年夜写的数字;rn返回小写的数字。这个数字必需是介于1和3999之间的一个整数

S999

999S

S999:负数则返回一个负数,前里减上一个负号;正数则返回一个正数,前里减上一个正号

999S:负数则返回一个负数,后里减上一个负号;正数则返回一个正数,后里减上一个正号

TM 

TM

返回由最少个字符构成的数字。默许设置是TM9,这会返回利用固定默示法默示的数字,除非字符个数超越64。假定字符个数超越64,就返回利用科学计数法默示的数字

U999

在指定位置返回货币符号(例如欧元),该符号起原于NLS_DUAL_CURRENCY数据库参数的设置

99V99

返回该数乘以10x的成效,此中x是V以后9的个数。假定需要,就对该数与整

XXXX

返回该数字的十六进制情势。假定该数字没有是整数,就将其与整,变成一个整数

 

 

 

 

面前目今现今往看几个利用TO_CHAR()函数将数字转换为字符串的例子。表1-5给出了几个挪用TO_CHAR函数的例子,同时还给出了从TO_CHAR函数中返回的成效:

表1-5  TO_CHAR函数的例子

TO_CHAR函数挪用

输 出 结 

TO_CHAR(12345.67, "99999.99")

12345.67

TO_CHAR(12345.67, "99,999.99")

12,345.67

TO_CHAR(-12345.67, "99,999.99")

-12,345.67

TO_CHAR(12345.67, "099,999.99")   

012,345.67

TO_CHAR(12345.67, "99,999.9900")   

12,345.6700

TO_CHAR(12345.67, "$99,999.99")   

$12,345.67

TO_CHAR(0.67, "B9.99")     

.67

TO_CHAR(12345.67, "C99,999.99")    

USD12,345.67

TO_CHAR(12345.67, "99999D99") 

12345.67

TO_CHAR(12345.67, "99999.99EEEE")      

1.23E+04

TO_CHAR(0012345.6700, "FM99999.99")

12345.67

TO_CHAR(12345.67, "99999G99")    

123,46

TO_CHAR(12345.67, "L99,999.99")  

$12,345.67

TO_CHAR(-12345.67, "99,999.99MI")   

12,345.67

TO_CHAR(-12345.67, "99,999.99PR")

12,345.67

TO_CHAR(2007, "RN")

MMVII

TO_CHAR(12345.67, "TM")

12345.67

TO_CHAR(12345.67, "U99,999.99")      

$12,345.67

TO_CHAR(12345.67, "99999V99")  

1234567

假定指定了一个花式,而要处置的数包含的数字个数多于花式中指定的数字个数,那么当停止这类花式转换时,TO_CHAR函数就会返回一个由井号(#)构成的字符串。例如:

SELECT TO_CHAR(12345678.90, "99,999.99")

FROM dual;

TO_CHAR(12345678.90, "99,999.99")

------------------------------

##########

TO_CHAR函数之所以返回井号字符是果为数字12345678.90中包含的数字个数超越了花式化字符串99,999.99中许可的数字个数。

虽然,也可利用TO_CHAR函数将包含数字的列转换为字符串。例如,下里这个查询利用TO_CHAR函数将products表的price列转换为一个字符串:

SELECT product_id, "The price of this product is" || TO_CHAR(price, "$99.99")

FROM products

WHERE product_id 5;

PRODUCT_ID      "THEPRICEOFTHISPRODUCTIS"||TO_CHAR(

-----------     ---------------------------------------

     The price of this product is $19.95

         The price of this product is $30.00

         The price of this product is $25.99

         The price of this product is $13.95


<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23925929/viewspace-1115184/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2010-05-17