Oracle数据库中chr()、ascii()、asciistr()、convert()函数的使用(附ASCII编码表)

oracle数据库中有很多的转换函数,主要有chr()、ascii()、asciistr()、cast()、chartorowid()、convert()、rowidtochar()、to_char()、to_date()、to_number()等,其中to_char()、to_date()、to_number()是最常见也是最常用的,chr()一般常出现在控制字符串输出的时候。本文主要总结chr()、ascii()、asciistr()、convert()这四个转换函数:

1、chr()

chr()函数是将ASCII码转换为字符:ASCII码 -> 字符,ASCII码对应的字符可以参见本文后面的ASCII编码表。

chr()示例

图1:chr()示例

2、ascii()

ascii()函数是chr()的反函数,它表示将字符转换为ASCII码:字符 -> ASCII码。

ascii()示例

图2:ascii()示例

3、asciistr()

asciistr()函数是将字符串转换为ascii字符串,如下图3:

asciistr()示例

图3:asciistr()示例

关于asciistr()函数,我在网上看到一篇文章说可以用asciistr()函数来判断一个字符串中是否含有中文字符,我看了其思路,挺有参考价值的,大概是这样的:

用asciistr()函数判断一个字符串中是否含有中文字符

图4:用asciistr()函数判断一个字符串中是否含有中文字符

根据上图4可以看出,如果是中文字符,那么用asciistr()转换以后,其形式是\4E2D这样的,前面有斜杠\,但是并不是所有带有\都是中文字符,因为斜杠\本身用asciistr()转换后,其结果是\005C,也是带有\的,所以对于这个字符要特别注意下。所以,这种方法的思路就是可以先replace掉字符串中的斜杠\,然后再用asciistr()转换,然后判断转换后的字符串中是否有斜杠\,如果有则表示存在中文字符。如果再加上循环统计的代码,还可以用于统计出一共有多少个中文字符。

4、convert()

convert()函数的转换是用于将字符串从一个字符集转化为另一个字符集,函数形式:convert(char, dest_char_set [, source_char_set]),其中char表示要转换的字符串,dest_char_set表示要转换成的目的字符集,source_char_set是char的原本字符集,如果缺省,则默认是数据库的字符集。convert('字符串', 'UTF8', 'ZHS16GBK');

convert()示例

图5:convert()示例

有关convert()的转换思路,跟convert()相关的一些知识,可以参见博客中《收藏的一段oracle数据库中blob类型按指定编码转换为blob、clob、字符串类型的代码》这篇博文。

附录(ASCII编码表):

ASCII编码表

图6:ASCII编码表

猜你喜欢

转载自tommy-lu.iteye.com/blog/2319943