Oracle怎么用正则表达式过滤字段中"非汉字"的所有字符? 50
Oracle怎么用正则表达式过滤字段中"非汉字"的所有字符?Oracle怎么用正则表达式过滤字段中"非汉字"的所有字符?我的姓名字段中因为录入问题,有空格,各种符号,数字...
Oracle怎么用正则表达式过滤字段中"非汉字"的所有字符?Oracle怎么用正则表达式过滤字段中"非汉字"的所有字符?我的姓名字段中因为录入问题,有空格,各种符号,数字,大小写字母,怎么用正则表达式在查询时过滤掉这些呢?只保留汉字,求大神!!!
展开
1个回答
展开全部
从表里提取汉字, 需要考虑字符集, 不同的字符集汉字的编码有所不同
这里以GB2312为例, 写一函数准确地从表里提取简体汉字.
假设数据库字符集编码是GB2312, 环境变量(注册表或其它)的字符集也是GB2312编码
并且保存到表里的汉字也都是GB2312编码的
那么也就是汉字是双字节的,且简体汉字的编码范围是
B0A1 - F7FE
换算成10进制就是
B0 A1 F7 FE
176,161 - 247,254
我们先看一下asciistr函数的定义
Non-ASCII characters are converted to the form \xxxx, where xxxx represents a UTF-16 code unit.
但是这并不表示以 "\" 开始的字符就是汉字了
举例如下
SQL> select * from test;
NAME
这里以GB2312为例, 写一函数准确地从表里提取简体汉字.
假设数据库字符集编码是GB2312, 环境变量(注册表或其它)的字符集也是GB2312编码
并且保存到表里的汉字也都是GB2312编码的
那么也就是汉字是双字节的,且简体汉字的编码范围是
B0A1 - F7FE
换算成10进制就是
B0 A1 F7 FE
176,161 - 247,254
我们先看一下asciistr函数的定义
Non-ASCII characters are converted to the form \xxxx, where xxxx represents a UTF-16 code unit.
但是这并不表示以 "\" 开始的字符就是汉字了
举例如下
SQL> select * from test;
NAME
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询