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参数值说明:

  1. YEAR:年份;
  2. YYYY:四位数年份;
  3. YYY:年份的最后三位数;
  4. YY:年份的最后两位数;
  5. Y:年份的最后一位数;
  6. MONTH:月份的全称;
  7. MON:月份的简称;
  8. MM:两位数月份;
  9. DAY:一周中得到第几天全称;
  10. DY:一周中的第几天简写;
  11. DDD:一年中的第几天;
  12. DD:一个月当中的第几天;
  13. D:一周中的第几天;
  14. HH24:小时(24小时制);
  15. HH12:小时(12小时制);
  16. M:分;
  17. SS:秒;
  18. Q:季度;
  19. WW:一年中的第几周;
  20. 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参数格式一致):

  1. YEAR:年份;
  2. YYYY:四位数年份;
  3. YYY:年份的最后三位数;
  4. YY:年份的最后两位数;
  5. Y:年份的最后一位数;
  6. MONTH:月份的全称;
  7. MON:月份的简称;
  8. MM:两位数月份;
  9. DAY:一周中得到第几天全称;
  10. DY:一周中的第几天简写;
  11. DDD:一年中的第几天;
  12. DD:一个月当中的第几天;
  13. D:一周中的第几天;
  14. HH24:小时(24小时制);
  15. HH12:小时(12小时制);
  16. M:分;
  17. SS:秒;
  18. Q:季度;
  19. WW:一年中的第几周;
  20. W:一个月中的第几周。

        若sourceValue为数值型:

  1. ,】:逗号,是分组符号,一般作为千分位使用,可以出现多次,只能出现在整数部分;
  2. .】:点号,只能出现在小数点对应位置,且只能出现一次;
  3. $】:美元符号,可以出现在任何地方,但只能出现一次;
  4. 0】:零,在对应位置返回对应字符,若无则用0填充;
  5. 9】:在小数位,表示转换为对应字符,若无则以0表示;在整数位,若无对应则不填充;
  6. B】:空格符,在整数部分最前面添加一个空格,没有其它特别作用,可出现在任何位置,只能出现在整数部位;
  7. C】:国际货币符号,在特定的位置返回一个ISO货币符号,即NLS_ISO_CURRENCY参数所代表的值,只能出现在整数部分第一位;
  8. D】:ISO小数位符号,是点号的国际版本,作用等同于点号,也只能出现一次;
  9. EEEE】:科学计算符;
  10. G】:分组符号,是逗号的的ISO标准,作为分组符号使用,可以出现在多个地方;
  11. L】:本地货币符号,是国际货币符号C的本地版本,可出现在最前面和最后面;
  12. MI】:负号,若是负数,在尾部加上负号,若是正数,则在尾部加上空格;
  13. PR】:负数的另一种表达方式,若是正数,则头部加上空格,若是负数,则用尖括号<>将数字包围起来;
  14. RN】:把整数(1-3999)转换为罗马字符,RN表示转为大写,rn表示转为小写;
  15. S】:若为整数,则加一个正号,若为负数,则加一个负号,若S在前面,则加在前面,若S在后面,则加在后面;
  16. TM】:使用时格式只能为TM9或TME,格式为TM9时,效果等同于没有使用该参数;
  17. U】:双币符号;
  18. V】:不能和小数放在一起,但是可以与货币放在一起;
  19. 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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐