首页 > 数据库 > Oracle > Oracle SQL函数(四-1)
3
偶尔大体需要将一个值从一种数据范例转换为另外一种数据范例。例如,产物价格本来是以数字花式保存的(例如,1346.95),想将其转换成包含美圆和逗号的情势($1,346.95)。转换函数可以将一个值从一种数据范例转换为另外一种数据范例。
表1-3列出了一些常常利用的转换函数。
表1-3
|
函 |
说 |
|
ASCIISTR(x) |
将x转换为一个ASCII字符串,此中x可所以由字符散开的随便字符构成的字符串 |
|
BIN_TO_NUM(x) |
将二进制数字x转换为NUMBER范例 |
|
CAST(x |
将x转换为type所指定的兼容数据库范例 |
|
CHARTOROWID(x) |
将x转换为ROWID范例 |
|
COMPOSE(x) |
将x转换为一个Unicode编码的字符串,字符串利用与x完齐相通的字符散。Unicode利用2字节字符散,可以默示超越65 |
|
CONVERT(x,
source_char, |
将x从source_char转换为dest_char |
|
DECODE
(x, |
将x与search中的值停止比较;假定相当,DECODE() |
|
DECOMPOSE(x) |
先对x停止分解,再将其转换为一个Unicode字符串,字符串利用与x完齐相通的字符散 |
|
HEXTORAW(x) |
将包含十六进制数字(基数为16)的字符x转换为一个二进制数字(RAW)。这个函数返回RAW范例的数字 |
|
NUMTODSINTERVAL(x) |
将数字x转换为一个INTERVAL |
|
NUMTOYMINTERVAL(x) |
将数字x转换为一个INTERVAL |
|
RAWTOHEX(x) |
将二进制数字(RAW)x转换为一个VARCHAR2范例的字符串,值为等价的十六进制数字 |
|
RAWTONHEX(x) |
将二进制数字(RAW)x转换为一个NVARCHAR2范例的字符串,值为等价的十六进制数字。NVARCHAR2范例用于以国家字符散花式存储字符串 |
|
ROWIDTOCHAR(x) |
将ROWID |
|
ROWIDTONCHAR(x) |
将ROWID |
|
TO_BINARY_DOUBLE(x) |
将x转换为一个BINARY_DOUBLE范例。(此函数是Oracle |
|
TO_BINARY_FLOAT(x) |
将x转换为一个BINARY_FLOAT范例。(此函数是Oracle |
|
TO_BLOB(x) |
将x转换为一个二进制年夜对象(BLOB)范例。BLOB用往存储年夜量的二进制数据。第14章将介绍年夜对象的知识 |
|
TO_CHAR(x[, |
将x转换为一个VARCHAR2字符串。可以指定一个可选参数format往说明x的花式 |
|
TO_CLOB(x) |
将x转换为一个字符年夜对象(CLOB)。CLOB用于保存年夜量的字符数据 |
|
TO_DATE(x[, |
将x转换为一个DATE范例 |
|
TO_DSINTERVAL(x) |
将x转换为一个INTERVAL |
|
TO_MULTI_BYTE(x) |
将x中的单字节字符转换为对应的多字节字符。返回范例与x的范例相通 |
|
TO_NCHAR(x) |
将数据库字符散开的x转换为一个NVARCHAR2字符串 |
|
TO_NCLOB(x) |
将x转换为一个NCLOB范例。NCLOB用于保存年夜量的国家语行字符数据 |
|
TO_NUMBER(x[, |
将x转换为一个NUMBER范例 |
|
TO_SINGLE_BYTE(x) |
将x中的多字节字符转换为对应的单字节字符。返回范例与x的范例相通 |
|
TO_TIMESTAMP(x) |
将字符串x转换为一个TIMESTAMP范例 |
|
TO_TIMESTAMP_TZ(x) |
将字符串x转换为一个TIMESTAMP |
|
TO_YMINTERVAL(x) |
将字符串x转换为一个INTERVAL |
|
TRANSLATE(x, from_string,to_string) |
将x中通盘的from_string转换为to_string |
|
UNISTR(x) |
将x中的字符转换为国家语行字符散(NCHAR) |
1.
TO_CHAR(x
SELECT
FROM
TO_CHAR(12345.67)
---------
12345.
下里这个查询利用TO_CHAR()函数将12345678.90转换为一个字符串,并指明要利用99,999.99花式。TO_CHAR()函数返回的字符串中的成效在千分位有一个逗号把数字合并开往:
SELECT
FROM
TO_CHAR(12345.67,
--------------------
12,345.
format字符串是可以传递给TO_CHAR()函数的一个可选参数,该参数可以影响TO_CHAR()函数的返回值。可用的部份参数如表1-4所示。
表1-4
|
参 |
格 |
说 |
|
|
9 |
999 |
返回指定位置处的数字,假定该值为负数,前里减一个负号 |
|
|
0 |
0999 9990 |
0999:返回一个数字,前里补0 9990:返回一个数字,后里补0 |
|
|
. |
999.99 |
在指定位置处返回一个小数点 |
|
|
, |
9,999 |
在指定位置处返回一个逗号 |
|
|
$ |
$999 |
在数字开头返回一个美圆符号 |
|
|
B |
B9.99 |
假定一个定点数的整数部份为0,就在整数部份返回空格 |
|
|
C |
C999 |
在指定位置处返回ISO货币符号,这个货币符号起原于由DBA设置的数据库参数NLS_ISO_CURRENCY |
|
|
D |
9D99 |
在指定位置处返回小数点符号,该符号起原于NLS_NUMERIC_CHARACTER数据库参数的设置(默许值为小数点字符) |
|
|
EEEE |
9.99EEEE |
返回利用科学计数法默示的数字 |
|
|
FM |
FM90.9 |
删除数字开头和结尾处的空格 |
|
|
G |
9G999 |
在指定位置处返回组合并符符号,该符号起原于NLS_NUMERIC_CHARACTER数据库参数的设置 |
|
|
L |
L999 |
在指定位置处返回本地货币符号,该符号起原于NLS_CURRENCY |
|
|
MI |
999MI |
负数则返回这个负数,后里减上一个负号(减号);正数则返回这个正数,后里减上一个空格 |
|
|
PR |
999PR |
负数则返回这个负数,并将其包含在一对尖括号(< |
|
|
RN rn |
RN rn |
返回这个数字的罗马数字情势。RN返回年夜写的数字;rn返回小写的数字。这个数字必需是介于1和3999之间的一个整数 |
|
|
S |
S999 999S |
S999:负数则返回一个负数,前里减上一个负号;正数则返回一个正数,前里减上一个正号 999S:负数则返回一个负数,后里减上一个负号;正数则返回一个正数,后里减上一个正号 |
|
|
TM |
TM |
返回由最少个字符构成的数字。默许设置是TM9,这会返回利用固定默示法默示的数字,除非字符个数超越64。假定字符个数超越64,就返回利用科学计数法默示的数字 |
|
|
U |
U999 |
在指定位置返回货币符号(例如欧元),该符号起原于NLS_DUAL_CURRENCY数据库参数的设置 |
|
|
V |
99V99 |
返回该数乘以10x的成效,此中x是V以后9的个数。假定需要,就对该数与整 |
|
|
X |
XXXX |
返回该数字的十六进制情势。假定该数字没有是整数,就将其与整,变成一个整数 |
|
|
|
|
|
|
面前目今现今往看几个利用TO_CHAR()函数将数字转换为字符串的例子。表1-5给出了几个挪用TO_CHAR函数的例子,同时还给出了从TO_CHAR函数中返回的成效:
表1-5
|
TO_CHAR函数挪用 |
输 |
|
TO_CHAR(12345.67, |
12345.67 |
|
TO_CHAR(12345.67, |
12,345.67 |
|
TO_CHAR(-12345.67, |
-12,345.67 |
|
TO_CHAR(12345.67, |
012,345.67 |
|
TO_CHAR(12345.67, |
12,345.6700 |
|
TO_CHAR(12345.67, |
$12,345.67 |
|
TO_CHAR(0.67, |
.67 |
|
TO_CHAR(12345.67, |
USD12,345.67 |
|
TO_CHAR(12345.67, |
12345.67 |
|
TO_CHAR(12345.67, |
1.23E+04 |
|
TO_CHAR(0012345.6700, |
12345.67 |
|
TO_CHAR(12345.67, |
123,46 |
|
TO_CHAR(12345.67, |
$12,345.67 |
|
TO_CHAR(-12345.67, |
12,345.67 |
|
TO_CHAR(-12345.67, |
12,345.67 |
|
TO_CHAR(2007, |
MMVII |
|
TO_CHAR(12345.67, |
12345.67 |
|
TO_CHAR(12345.67, |
$12,345.67 |
|
TO_CHAR(12345.67, |
1234567 |
假定指定了一个花式,而要处置的数包含的数字个数多于花式中指定的数字个数,那么当停止这类花式转换时,TO_CHAR函数就会返回一个由井号(#)构成的字符串。例如:
SELECT
FROM
TO_CHAR(12345678.90,
------------------------------
##########
TO_CHAR函数之所以返回井号字符是果为数字12345678.90中包含的数字个数超越了花式化字符串99,999.99中许可的数字个数。
虽然,也可利用TO_CHAR函数将包含数字的列转换为字符串。例如,下里这个查询利用TO_CHAR函数将products表的price列转换为一个字符串:
SELECT
FROM
WHERE
PRODUCT_ID
-----------
1
2
3
4
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23925929/viewspace-1115184/ ,如需转载,请注明出处,否则将追究法律责任。