网站首页 > 文章中心 > 其它

oracle如何剔除中文

作者:小编 更新时间:2023-08-12 13:15:35 浏览量:409人看过

Oracle判断字段中是否包含中文(若有,取出该中

第一段:问题说明

在处理数据的时候,需要判断某个字段字符串中是否有中文,若有则取出中文.

第二段:解决办法

首先如何判断某个字段字符串中是否有中文.这里介绍三种方法:

①.、采用ASCIISTR函数

说明:ASCIISTR函数用于返回字符的ASCII形式的字符串;非ASCII的字符被转化为\xxxx的形式.换句话说:如果字符中包含中文,则必定会有\xxxx的字符.

oracle如何剔除中文-图1

所以,我们直接利用ASCIISTR函数匹配'\'即可判断.

上面介绍了如何判断某个字段字符串中是否有中文,在成功判断字段中是否有中文之后;那么该如何取出字段中的中文呢?

这里介绍一种快速准确的办法:

函数创建成功后,直接传jldw调用就可获取该字符的中文了.

源码如下:

count_str number; ? ? --字符串中字符的个数

i number:=1; ? ? ? ? ?--循环变量

str_ascii number; ? ?--当前等待判断字符的ascii码

begin

select length(custName) into count_str from dual; ? ?--取出待处理字符串的长度

while icount_str loop ? ? ? ? ? ? ? ? ? ? ? ?---根据待处理字符串长度(counts)?,逐个字符判断处理

current_char:=substr(custName,i,1);

select ASCII(current_char) into str_ascii from dual;

tmp_custName:=tmp_custName||current_char;

end if;

i:=i+1;

end loop;

Result:=tmp_custName;

return(Result);

end getCustText;

oracle中 如何去除汉字?

from?dual;

如何利用oracle正则表达式去除字段中含有的汉字

我尝试着写了一个,如果都是只在前后有中文,那么这个应该可以.你试试,我这里可没有环境去测试.

SELECT regexp_substr(changpai, '[[:alnum:]]+') FROM huishou.dx_new_car;

ORACLE中怎样用正则表达式过滤中文字符

从表里提取汉字, 需要考虑字符集, 不同的字符集汉字的编码有所不同

那么也就是汉字是双字节的,且简体汉字的编码范围是

换算成10进制就是

我们先看一下asciistr函数的定义

但是这并不表示以 "\" 开始的字符就是汉字了

举例如下

SQL select * from test;

NAME

--------------------

,啊OO10哈

土嘎嘎的粉丝们大家好aa

大家好aa/

★ABC

然后用asciistr函数转换一下试试

SQL select name,asciistr(name) from test;

NAME ASCIISTR(NAME)

-------------------- ----------------------

我们看到最后一条记录的实心五角星也是 "\"开头的

此时我们就不能用asciistr(字段)是否存在 "\" 来判断是否含有汉字了.

[PHP]

as

v_comma pls_integer;

v_code_q pls_integer;

v_code_w pls_integer;

if p_name is not null then

for i in 1..length(p_name) loop

v_comma := instrb(v_code,',');

v_code_q := to_number(substrb(v_code,1,v_comma-1));

v_chinese := v_chinese||substr(p_name,i,1);

v_code := ltrim(v_code,',');

return v_chinese;

else

return '';

end;

/

.

[/PHP]

好,现在来执行一些语句

① 列出有汉字的记录

SQL select name from test where length(get_chinese(name))0;

SQL select get_chinese(name) from test where length(get_chinese(name))0;

GET_CHINESE(NAME)

---------------------------------------------------------------------------

啊哈

土嘎嘎的粉丝们大家好

大家好

大海

============

改写这个函数,可以提取非汉字或者汉字

该函数有两个参数,第一个表示要提取的字符串,第二个是1,表示提取汉字,是非1,表示提取非汉字

create or replace function get_chinese

(

v_comma pls_integer;

v_code_q pls_integer;

v_code_w pls_integer;

v_non_chinese := v_non_chinese||substr(p_name,i,1);

if p_chinese = '1' then

return v_non_chinese;

SQL select * from a;

我们啊、

他(艾呀)是★们

他的\啊@

SQL select get_chinese(name,1) from a;

GET_CHINESE(NAME,1)

-----------------------------------------

我们啊

他艾呀是们

他的啊

SQL select get_chinese(name,0) from a;

GET_CHINESE(NAME,0)

()★

\@

SQL

以上就是土嘎嘎小编为大家整理的oracle如何剔除中文相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章