1.convert:字符串字符集转换
【函数格式】:convert(sourceString, charSetTo [, charSetFrom])
【参数说明】:
- sourceString:要进行转换处理的源字符串;
- charSetTo :要转换的目标字符集;
- charSetFrom:要转换的源字符集,是可选参数,若省略该参数,则默认选择数据库服务器字符集。
【函数说明】:将源字符串sourceString从源字符集charSetFrom转换为目标字符集charSetTo 。
【可用字符集】:
- US7ASCII:美国 7 位 ASCII 字符集;
- WE8DEC:西欧 8 位字符集;
- WE8HP:惠普西欧 Laserjet 8 位字符集;
- F7DEC:DEC 法语 7 位字符集;
- WE8EBCDIC500:IBM 西欧 EBCDIC 代码第 500 页;
- WE8PC850:IBM PC 代码第 850 页;
- WE8ISO8859P1:ISO 8859-1 西欧 8 位字符集。
【样例展示】:
select convert('sourceString','we8hp','f7dec') from dual; --返回:sourceString
select convert('sourceString','we8hp') from dual; --返回:sourceString
select convert('sourceString','US7ASCII','ZHS16GBK') from dual; --返回:sourceString
select convert('sourceString','US7ASCII') from dual; --返回:sourceString
select convert('源字符串','ZHS16GBK') from dual; --返回:源字符串
select convert('源字符串','ZHS16GBK','ZHS16GBK') from dual; --返回:源字符串
2.to_date:字符串转换为日期型
【函数格式】:to_date(sourceString[,formatParm[,nlsParm]])
【参数说明】:
- sourceString:要进行转换处理的源字符串;
- formatParm:格式参数,源字符串按照该参数的指定格式进行转换,是可选参数;
- nlsParm:nls设置参数,是可选参数。
formatParm参数值说明:
- YEAR:年份;
- YYYY:四位数年份;
- YYY:年份的最后三位数;
- YY:年份的最后两位数;
- Y:年份的最后一位数;
- MONTH:月份的全称;
- MON:月份的简称;
- MM:两位数月份;
- DAY:一周中得到第几天全称;
- DY:一周中的第几天简写;
- DDD:一年中的第几天;
- DD:一个月当中的第几天;
- D:一周中的第几天;
- HH24:小时(24小时制);
- HH12:小时(12小时制);
- M:分;
- SS:秒;
- Q:季度;
- WW:一年中的第几周;
- W:一个月中的第几周。
【函数说明】:将源字符串sourceString按参数formatParm的指定格式转换为日期型数据。
【样例展示】:
select to_date('2022/2/20 12:59:22','yyyy-mm-dd hh24:mi:ss') from dual; --返回:2022/2/20 12:59:22
select to_date('2022/2/20','yyyy-mm-dd') from dual; --返回:2022/2/20
select to_date('2022/2','yyyy-mm') from dual; --返回:2022/2/1
select to_date('2022','yyyy') from dual; --返回:2022/2/1
3.to_char:日期型或数值型转换为字符型
【函数格式】:to_char(sourceValue[,formatParm[,nlsParm]])
【参数说明】:
- sourceValue:要进行转换处理的日期型或数值型数据;
- formatParm:格式参数,源数据按照该参数的指定格式进行转换,是可选参数;
- nlsParm:nls设置参数,是可选参数。
formatParm参数值说明:
若sourceValue为日期型(与to_char函数的formatParm参数格式一致):
- YEAR:年份;
- YYYY:四位数年份;
- YYY:年份的最后三位数;
- YY:年份的最后两位数;
- Y:年份的最后一位数;
- MONTH:月份的全称;
- MON:月份的简称;
- MM:两位数月份;
- DAY:一周中得到第几天全称;
- DY:一周中的第几天简写;
- DDD:一年中的第几天;
- DD:一个月当中的第几天;
- D:一周中的第几天;
- HH24:小时(24小时制);
- HH12:小时(12小时制);
- M:分;
- SS:秒;
- Q:季度;
- WW:一年中的第几周;
- W:一个月中的第几周。
若sourceValue为数值型:
- 【,】:逗号,是分组符号,一般作为千分位使用,可以出现多次,只能出现在整数部分;
- 【.】:点号,只能出现在小数点对应位置,且只能出现一次;
- 【$】:美元符号,可以出现在任何地方,但只能出现一次;
- 【0】:零,在对应位置返回对应字符,若无则用0填充;
- 【9】:在小数位,表示转换为对应字符,若无则以0表示;在整数位,若无对应则不填充;
- 【B】:空格符,在整数部分最前面添加一个空格,没有其它特别作用,可出现在任何位置,只能出现在整数部位;
- 【C】:国际货币符号,在特定的位置返回一个ISO货币符号,即NLS_ISO_CURRENCY参数所代表的值,只能出现在整数部分第一位;
- 【D】:ISO小数位符号,是点号的国际版本,作用等同于点号,也只能出现一次;
- 【EEEE】:科学计算符;
- 【G】:分组符号,是逗号的的ISO标准,作为分组符号使用,可以出现在多个地方;
- 【L】:本地货币符号,是国际货币符号C的本地版本,可出现在最前面和最后面;
- 【MI】:负号,若是负数,在尾部加上负号,若是正数,则在尾部加上空格;
- 【PR】:负数的另一种表达方式,若是正数,则头部加上空格,若是负数,则用尖括号<>将数字包围起来;
- 【RN】:把整数(1-3999)转换为罗马字符,RN表示转为大写,rn表示转为小写;
- 【S】:若为整数,则加一个正号,若为负数,则加一个负号,若S在前面,则加在前面,若S在后面,则加在后面;
- 【TM】:使用时格式只能为TM9或TME,格式为TM9时,效果等同于没有使用该参数;
- 【U】:双币符号;
- 【V】:不能和小数放在一起,但是可以与货币放在一起;
- 【X】:转换为16进制,必须是非负整数,前面只能与0或FM组合。
nlsParm参数值说明:
1.若参数sourceValue值为日期,则nlsparm=NLS_DATE_LANGUAGE,用来控制返回的月份和日期所使用的语言;
2.若参数sourceValue值为数字,则nlsparm=NLS_NUMERIC_CHARACTERS,用来指定小数位分隔符、千分位分隔符、货币符号。
【函数说明】:将日期型或数值型参数sourceValue按参数formatParm的指定格式转换为字符型数据。
【样例展示一】:sourceValue为日期型
select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual; --返回:2022-02-20 14:38:03
select to_char(sysdate, 'Month DD, yyyy') from dual; --返回:2月 20, 2022
select to_char(sysdate, 'FMMonth DD, yyyy') from dual; --返回:2月 20, 2022
select to_char(sysdate, 'MON DDth, yyyy') from dual; --返回:2月 20TH, 2022
select to_char(sysdate, 'FMMON DDth, yyyy') from dual; --返回:2月 20TH, 2022
select to_char(sysdate, 'FMMon ddth, yyyy') from dual; --返回:2月 20th, 2022
select to_char(sysdate, 'yyyy/mm/dd') from dual; --返回:2022/02/20
select to_char(sysdate, 'YYYY') from dual; --返回:2022
select to_char(sysdate, 'q') from dual; --返回:1
select to_char(sysdate, 'mm') from dual; --返回:02
select to_char(sysdate, 'Month') from dual; --返回:2月
select to_char(sysdate, 'MON') from dual; --返回:2月
select to_char(sysdate, 'ww') from dual; --返回:08
select to_char(sysdate, 'ddd') from dual; --返回:051
select to_char(sysdate, 'dd') from dual; --返回:20
select to_char(sysdate, 'd') from dual; --返回:1
select to_char(sysdate,'Day-Mon-yyyy','NLS_DATE_LANGUAGE=English') from dual; --返回:Sunday -Feb-2022
select to_char(sysdate,'yyyy-Mon-Day','NLS_DATE_LANGUAGE=English') from dual; --返回:2022-Feb-Sunday
【样例展示二】:sourceValue为数值型
select to_char(56789,'9,99,99') from dual; --返回:5,67,89
select to_char(56789,'9,9,9,9,9') from dual; --返回:5,6,7,8,9
select to_char(567.56,'9,9,9.99') from dual; --返回:5,6,7.56
select to_char(567.56,'9,9,9.$99') from dual; --返回:$5,6,7.56
select to_char(0.56,'9,9,0.$99') from dual; --返回:$0.56
select to_char(567,'999.00') from dual; --返回:567.00
select to_char(567,'999.99') from dual; --返回:567.00
select to_char(567,'99999.9') from dual; --返回:567.0
select 'A'||to_char(567,'99B99') from dual; --返回:A 567
select to_char(5678,'C9999') from dual; --返回:CNY5678
select to_char(5678.56,'9999d99') from dual; --返回:5678.56
select to_char(50060070008,'9.9EEEE') from dual; --返回:5.0E+10
select to_char(456789,'99G99G99') from dual; --返回:45,67,89
select to_char(456789,'999G9G99D00L') from dual; --返回:456,7,89.00¥
select to_char(5566,'9999mi')||'A'||to_char(-7788,'9999MI') from dual; --返回:5566 A7788-
select to_char(-5566.78,'9G999D00PR') from dual; --返回:<5,566.78>
select to_char(5,'RN')from dual; --返回:V
select to_char(5,'rn')from dual; --返回:v
select to_char(-5678,'S9999') from dual; --返回:-5678
select to_char(5678,'S9999') from dual; --返回:+5678
select to_char(5678,'tme') from dual; --返回:5.678E+03
select to_char(5678,'tm9') from dual; --返回:5678
select to_char(567,'U999') from dual; --返回:¥567
select to_char(6,'9V') from dual; --返回:6
select to_char(6,'9V9') from dual; --返回:60
select to_char(6,'9V99') from dual; --返回:600
select to_char(60,'99V99') from dual; --返回:6000
select to_char(10,'XX') from dual; --返回:A
4.to_number:字符型转换为数值型
【函数格式】:to_number(sourceString[,formatParm[,nlsParm]])
【参数说明】:
- sourceString:要进行转换处理的源字符串;
- formatParm:格式参数,源字符串按照该参数的指定格式进行转换,是可选参数;
- nlsParm:nls设置参数,是可选参数。
【函数说明】:将源字符串sourceString按参数formatParm的指定格式转换为数值型数据。
【注意事项】:源字符串sourceString必须符合数值型数据的格式,否则执行该函数时将报错。
【样例展示】:
select to_number('123456')from dual; --返回:123456
select to_number('123456.12')from dual; --返回:123456.12
select to_number('00123456') from dual; --返回:123456
select to_number('$123.45','$999.99') from dual; --返回:123.45
select to_number('5,6,7.56','9,9,9.99') from dual; --返回:567.56
5.cast:将源值转换为指定数据类型
【函数格式】:cast(sourceValue as dataType)
【参数说明】:
- sourceValue:要进行转换的源值;
- as:固定写法;
- dataType:目标数据类型。
【函数说明】:将源值sourceValue 转换为指定的数据类型dataType。
【样例展示】:
select cast('5678' AS int) from dual; --返回:5678
select cast('5678.56' AS int) from dual; --四舍五入,返回:5679
select cast('5678.46' AS int) from dual; --四舍五入,返回:5678
select cast('5678.5678' AS decimal(8,2)) from dual; --四舍五入,返回:5678.57
select cast('5678.5645' AS decimal(8,2)) from dual; --四舍五入,返回:5678.56
select cast('5678.5645' AS decimal(9,5)) from dual; --返回:5678.56450
select cast('5678.5645' AS decimal) from dual; --四舍五入,返回:5679
select cast('5678.4645' AS decimal) from dual; --四舍五入,返回:5678
select cast(5678 AS varchar2(50)) from dual; --返回:5678
select cast('5678' AS varchar2(50)) from dual; --返回:5678
6.chartorowid:将varchar2类型转换为rowid值
【函数格式】:chartorowid(sourceString)
【函数说明】:将源字符串sourceString转换为rowid值。
【注意事项】:sourceString必须为长度等于18的字符串,且必须符合rowid格式。
【特别说明】:在Oracle中,每一条记录都有一个rowid,在整个数据库中rowid是唯一的。
【样例展示】:
select chartorowid('EEEAFNAABGhHCZSADB') from dual;
--返回:AEEAFNAKFAAHCZSADB
7.rowidtochar:将rowid值转换为varchar2类型
【函数格式】:chartorowid(rowid)
【函数说明】:将源字符串rowid值转换为长度等于18的字符串。
【特别说明】:在Oracle中,每一条记录都有一个rowid,在整个数据库中rowid是唯一的。
【样例展示】:
select rowidtochar(rowid) from dual;
--返回:AAAAB0AABAAAAOhAAA
8.hextoraw:将十六进制字符串转换为二进制
【函数格式】:hextoraw(sourceString)
【函数说明】:将一个由string表示的二进制数值sourceString转换为一个RAW数值,sourceString必须包含一个十六进制的数值,String中的每两个字符表示结果RAW中的一个字节。
【样例展示】:
select hextoraw('ABCD1234') from dual; --返回:ABCD1234
select hextoraw('ABCD123') from dual; --返回:0ABCD123
select hextoraw('ABCDEF12') from dual; --返回:ABCDEF12
select hextoraw('ABCDEFG') from dual; --报错:无效的十六进制数字
9.rawtohex:将二进制字符串转换为十六进制
【函数格式】:rawtohex(sourceString)
【函数说明】:将RAW类数值sourceString转换为一个十六进制表示的字符串,sourceString中的每个字节都被转换为一个双字节的字符串。
【样例展示】:
select rawtohex('11') from dual; --返回:3131
select rawtohex('00') from dual; --返回:3030
select rawtohex('AB') from dual; --返回:4142
select rawtohex('FG') from dual; --返回:4647
10.to_multi_byte:半角转化为全角
【函数格式】:to_multi_byte(sourceString)
【函数说明】:将sourceString中所有的单字节字符都替换为等价的多字节字符。
【特别说明】:只有当数据库字符集同时包含多字节和单字节字符时,该函数才有效,否则不会进行任何处理。
【样例展示】:
select to_multi_byte('数据库DataBase') text from dual;
--数据库DataBase
11.to_single_byte:全角转化为半角
【函数格式】:to_single_byte(sourceString)
【函数说明】:将sourceString中所有的多字节字符都替换为等价的单字节字符。
【特别说明】:只有当数据库字符集同时包含多字节和单字节字符时,该函数才有效,否则不会进行任何处理。
【样例展示】:
select to_single_byte('数据库DataBase') text from dual;
--数据库DataBase
12.nls_charset_id:字符集名称转换为字符集id
【函数格式】:nls_charset_id(sourceString)
【函数说明】:返回参数sourceString表示的字符集名称对应的字符集id。
【样例展示】:
select nls_charset_id('zhs16gbk') from dual; --返回:852
select nls_charset_id('AL32UTF8') from dual; --返回:873
select nls_charset_id('UTFE') from dual; --返回:872
select nls_charset_id('US7ASCII') from dual; --返回:1
13.nls_charset_name:字符集id转换为字符集名称
【函数格式】:nls_charset_name(sourceString)
【函数说明】:返回参数sourceString表示的字符集id对应的字符集名称。
【样例展示】:
select nls_charset_name(852) from dual; --返回:ZHS16GBK
select nls_charset_name(873) from dual; --返回:AL32UTF8
select nls_charset_name(872) from dual; --返回:UTFE
select nls_charset_name(1) from dual; --返回:US7ASCII
14.timestamp_to_scn:时间转换为scn
【函数格式】:timestamp_to_scn(timestampValue)
【函数说明】:将时间类型参数timestampValue转换为数值型scn。
【样例展示】:
select timestamp_to_scn(sysdate) from dual;
--返回:14221915379
15.scn_to_timestamp:scn转换为时间
【函数格式】:scn_to_timestamp(numberValue)
【函数说明】:将数值型参数numberValue转换为时间类型数据。
【样例展示】:
select scn_to_timestamp(current_scn) from v$database;
--返回:20-2月 -22 04.37.43.000000000 下午
16.asciistr:将任意字符集中的字符串转换为ASCII字符串
【函数格式】:asciistr(sourceString)
【函数说明】:可以将任意字符集中的字符串转换为ASCII字符串。
【样例展示】:
select asciistr('数据库DataBase') from dual; --返回:\6570\636E\5E93DataBase
select asciistr('Ê') from dual; --返回:\00EA
select asciistr('Í') from dual; --返回:\00ED
17.compose:返回Unicode参数的规范化字符串
【函数格式】:compose(sourceString)
【函数说明】:返回Unicode字符串sourceString参数对应的规范化字符串。
【特别说明】:该函数可以接受一个字母和一个组合标记,例如,字符'a'(对应Unicode字符为0097)和沉音符(对应Unicode字符为0300),可以得到一个由这两个标记组合而成的字符'à'。
【样例展示】:
select compose('a'||unistr('\0300')) from dual; --返回:à
18.decompose:返回字符串参数规范化分解后的Unicode字符串
【函数格式】:decompose(sourceString)
【函数说明】:返回字符串参数sourceString规范化分解后的Unicode字符串。
【样例展示】:
select decompose('â') from dual; --返回:a
更多推荐