oracle怎么去掉字符 oracle如何去掉字段里的某个字符

oracle怎么去掉字符串的空格的数据首先便是这Trim函数 。Trim 函数具有删除任意指定字符的功能,而去除字符串首尾空格则是trim函数被使用频率最高的一种 。语法Trim ( string ),参数string:string类型,指定要删除首部和尾部空格的字符串返回值String 。函数执行成功时返回删除了string字符串首部和尾部空格的字符串,发生错误时返回空字符串("") 。如果参数值为null时,会抛出空指针异常 。在oracle中,trim使用的形式多为人rtrim()与ltrim()两种,分别为去除字符串右边空格与去除字符串左边空格 。
当然trim的功能不止如此,下面进行细致的介绍,这里我多以去除字符串空格为例 。
我们看下trim函数的语法描述:trim( [ {{leading|trailing|both}[trim_character]|trim_character}from] trim_source
1)、不使用任何参数
SQL select trim('11') aa from dual;
AA
--
11
这是最常见的一种使用方法 , 都使用默认的参数,默认情况下TRIM会同时删除字符串前后出现的空格 。
2)、使用both参数,效果等同于方法一不使用任何参数
SQL select trim(both from '11') aa from dual;
AA
--
11
逗BOTH地参数表示同时去除字符串前后所指定的内容(默认情况下删除空格) 。
3)、使用leading与trailing参数
SQL select trim(leading from '11') aa from dual;
AA
----
11
SQL select trim(trailing from '11') aa from dual;
AA
-----
11
从结果中得分隔符'-',可以发现使用leading参数可以去除字符串右端的空格,而trailing参数则可以去除字符串左端的空格 。正如oracle提供的rtrim()与ltrim() 。
4)、使用trim_character参数
trim_character参数改变了逗删除空格地的默认行为 。如果想要删除字符串'xxxxWORLDxxxx'前后出现的逗x地,逗trim_character地参数就派上用场了 。
SQL select trim('x' from 'xxxxWORLDxxxx') aaaaa from dual;
AAAAA
-----
WORLD
trim_character配合逗both地、逗trailing地和逗leading地三个参数使用效果如下 , 与之前演示类似 。看结果 , 不赘述 。
SQL select trim('x' from 'xxxxWORLDxxxx') aaaaa from dual;
AAAAA
-----
WORLD
SQL select trim(both 'x' from 'xxxxWORLDxxxx') aaaaa from dual;
AAAAA
-----
WORLD
SQL select trim(trailing 'x' from 'xxxxWORLDxxxx') aaaaa from dual;
AAAAA
---------
xxxxWORLD
SQL select trim(leading 'x' from 'xxxxWORLDxxxx') aaaaa from dual;
AAAAA
---------
WORLDxxxx
必须注意的一点是这里的逗trim_character地参数只允许包含一个字符,不支持多字符 。trim不能满足我们去除多字符要求,但是我们可以使用rtrim和ltrim来处理 。
1)使用rtrim
SQL select rtrim('ORxxxxWORLDxxxxOR','OR') aaaaa from dual;
AAAAA
---------------
ORxxxxWORLDxxxx
2)使用ltrim
SQL select ltrim('ORxxxxWORLDxxxxOR','OR') aaaaa from dual;
AAAAA
---------------
xxxxWORLDxxxxOR
3)联合使用RTRIM和LTRIM函数达到我们的目的
SQL select rtrim(ltrim('ORxxxxWORLDxxxxOR','OR'),'OR') aaaaa from dual;
AAAAA
-------------
xxxxWORLDxxxx
使用rtrim和ltrim函数时的注意事项:逗OR地不表示整个逗OR地字符串进行匹配,而是发现任意的字符逗O地或字符逗R地均做删除操作 。
对于trim函数的应用就介绍到,下面介绍一下replace函数,个人觉得replace函数在去空格时更好用 。replace 函数用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式 。来看下replace函数的语法描述:replace('string_replace1','string_replace2','string_replace3')
'string_replace1' 待搜索的字符串表达式 , string_replace1 可以是字符数据或二进制数据 。
'string_replace2' 待查找的字符串表达式 , string_replace2 可以是字符数据或二进制数据 。
'string_replace3' 替换用的字符串表达式,string_replace3 可以是字符数据或二进制数据 。
返回类型 , 如果 string_replace(1、2 或 3)是支持的字符数据类型之一,则返回字符数据;如果 string_replace(1、2 或 3)是支持的 binary 数据类型之一,则返回二进制数据 。
这里我们依然以去空格为例 。
SQL select replace('aakk',' ','') abcd from dual;
ABCD
----
aakk
与使用trim函数的结果进行对比,我们可以发现 , 使用replace函数不仅可以去除字符串两端的空格,也可去除字符串内部的空格 。
当然,如果只是要去除字符串两端的空格 , 使用trim函数效率会更高 。
Oracle如何使用将一个字符里的字母去掉?Oracle使用函数将一个字符里的字母去掉:
selectcase when regexp_like(字段名,'.([a-z] |[A-Z])') then '包含字母' else '不包含字母' end
from 表名字
正则表达式函数:regexp_like
关键的参数是第二个:'.([a-z] |[A-Z])'其中.表示匹配任何单字符 , 换行符除外
[a-z]是小写字母|或[A-Z]大写字母
oracle字符串去除字段中%oracle字符串去除字段中%的方法:
1.查找字符串为下划线或百分号字符,使用escape选项来标识 如:查找表test中的addr字段以”li“开头的数据 select * from test where addr like ‘.
如何去除Oracle库表结构中的类空格字符1.首先是去除空格在进行比较(比如,把姓名中oracle怎么去掉字符的所有空格去除):
Update table_name set xm=replace(xm , ' ') ;
如果要查找哪些记录含有' ',可用相关oracle怎么去掉字符的语句查找 。
然后可进行比较 。
2.但是oracle怎么去掉字符我们可能会发现,有些姓名中间或末尾还有类似空格的字符没被去掉 , 但它们显然已经不是一般的空格oracle怎么去掉字符了,那么怀疑是Tab健作怪 。于是参照网上说的去掉TAB键的办法来处理,用chr(9)来替代空格键(TAB键的ASCII值为9) 。先取一条带有类空格字符的记录来做实验:
SELECT replace(xm, chr(9) ) from table_name where bh=’xxx’;
用这个办法会去掉一些真正的Tab键空格,然后采取批量更新的办法 。
3.但我遇到的情况没有这么幸运,没能去掉类空格键 。怎么办呢?我决定尝试先取得这个类空格键的ASCII码值,然后再用chr(ASCII码值)的方法来处理 。
①.取得含类空格键整个字符串的长度 length(),从而确定出类空格键在字符串中的起始位置、类空格键的长度 。
②.求出类空格键的ASCII码值:ascii(substr(xm,n,m)); n为类空格键的起始位置;m为长度 。
③.SELECT replace(xm, chr(第②步求得的ASCII码值) ) from table_name where bh=’xxx’;
问题得以解决 。但我发现 , 上述第②步求得的ASCII码值为41377 , 这应该是一个汉字的ASCII码值,看起来又像空格,于是我怀疑,会不会是中文状态下的空格键、TAB键?尝试之后发现不是 。我又怀疑,是不是全角、半角的区别?因为我们一般输入字符 , 是在半角下输入的 。我按照第一步“1.首先是去除空格在进行比较……”尝试,输入全角下的空格,进行查找,结果惊喜出现,原来所有未剔除掉的类空格,是全角状态下输入的空格,并接证实oracle怎么去掉字符了全角下输入的空格,其ASCII码值为41377 。
oracle如何去除字符串中的重复字符这个函数的功能主要是用于去除给定字符串中重复的字符串.在使用中需要指定字符串的分隔符.示例:
str := RemoveSameStr('zhang,Zhang,bao,Bao,bao,zhang', ',');
输出: zhang,Zhang,bao,Bao
--SQL
strvarchar2(1000);
currentIndex number;
startIndexnumber;
endIndexnumber;
type str_type is table of varchar2(30) index by binary_integer;
arr str_type;
Result varchar2(1000);
begin
-- 空字符串
if oldStr is null then
return('');
end if;
--字符串太长
if length(oldStr)1000 then
return(oldStr);
end if;
str := oldStr;
currentIndex := 0;
startIndex:= 0;
loop
currentIndex := currentIndex1;
endIndex:= instr(str, sign, 1, currentIndex);
if (endIndex = 0) then
exit;
end if;
arr(currentIndex) := trim(substr(str,
startIndex1,
endIndex - startIndex - 1));
startIndex := endIndex;
end loop;
--取最后一个字符串:
arr(currentIndex) := substr(str, startIndex1, length(str));
--去掉重复出现的字符串:
for i in 1 .. currentIndex - 1 loop
for j in i1 .. currentIndex loop
if arr(i) = arr(j) then
arr(j) := '';
end if;
end loop;
end loop;
str := '';
for i in 1 .. currentIndex loop
if arr(i) is not null then
str := str || sign || arr(i);
--数组置空:
arr(i) := '';
end if;
end loop;
--去掉前面的标识符:
Result := substr(str, 2, length(str));
return(Result);
end RemoveSameStr;
转载,仅供参考 。
【oracle怎么去掉字符 oracle如何去掉字段里的某个字符】oracle怎么去掉字符的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于oracle如何去掉字段里的某个字符、oracle怎么去掉字符的信息别忘了在本站进行查找喔 。

    推荐阅读