oracle怎么排除字符,oracle怎么删除字段

oracle如何去除字符串中的重复字符

这个函数的功能主要是用于去除给定字符串中重复的字符串.在使用中需要指定字符串的分隔符.示例:

为大关等地区用户提供了全套网页设计制作服务,及大关网站建设行业解决方案。主营业务为成都网站设计、成都做网站、大关网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

str := RemoveSameStr('zhang,Zhang,bao,Bao,bao,zhang', ',');

输出: zhang,Zhang,bao,Bao

--SQL

str varchar2(1000);

currentIndex number;

startIndex number;

endIndex number;

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 := currentIndex + 1;

endIndex := instr(str, sign, 1, currentIndex);

if (endIndex = 0) then

exit;

end if;

arr(currentIndex) := trim(substr(str,

startIndex + 1,

endIndex - startIndex - 1));

startIndex := endIndex;

end loop;

--取最后一个字符串:

arr(currentIndex) := substr(str, startIndex + 1, length(str));

--去掉重复出现的字符串:

for i in 1 .. currentIndex - 1 loop

for j in i + 1 .. 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中表列中的非法字符,如 空格 等看不到,或其他非法字符。

请定义非法字符。或者说,合法字符都有哪些?比如,%,_这类特殊字符算不算非法字符?

字符不同,处理方式也不同,所以需要先明确定义合法字符的范围。

大致的思路是,做一个函数,输入你原来的字符串,输出清洗后的字符串(即原字符串删除了空格及其它非法字符后剩下的部分),然后update users set user_name=clean_function(user_name);

去除oracle中的特殊字符,但是要保留以下几个字符 ( ) | 要怎么写语句?

1、在sql语句中,有些特殊字符,是sql保留的。比如 ' [ ]  等。

2、当需要查询某数据时,加入条件语句,或着当你需要insert记录时,我们用  '  来将字符类型的数据引起来。比如:Select * from Customers where City = 'London'。

3、当表的名字或列的名字中,含有空格等一些特殊字符时,我们需要用[] 将表名引起来,告诉语法分析器,[]号内的才是一个完整的名称。比如Select * from [Order Details]。

4、如果,字符数据中,含有 '  改怎么办呢?其实,好多人在这里并没有处理字符川中 ' 符号,才造成sql 注射危险。就那上面的那个例子。在Sql语句拼接的时代,比如string sql = "select * from Customers where CustomerID = '" + temp + "'"。

5、如果表或列的名称中含有 [ 或 ] 字符呢?比如Select * from [Order] Details],那中间 ] 符号岂不是先和第一个[ 配了。后面的就是非法的了。怎么办呢? 简单,使用 ]] 代替 ] 。对于[,则无须处理。那就该为Select * from [Order]] Details]。

Oracle如何使用将一个字符里的字母去掉?

Oracle使用函数将一个字符里的字母去掉:

select case when regexp_like(字段名,'.([a-z]+|[A-Z])') then '包含字母' else '不包含字母' end

from 表名字

正则表达式函数:regexp_like

关键的参数是第二个:'.([a-z]+|[A-Z])'其中.表示匹配任何单字符,换行符除外

[a-z]是小写字母|或[A-Z]大写字母

如何去除Oracle库表结构中的类空格字符

1.首先是去除空格在进行比较(比如,把姓名中的所有空格去除):

Update table_name set xm=replace(xm , ' ') ;

如果要查找哪些记录含有' ',可用相关的语句查找。

然后可进行比较。

2.但是我们可能会发现,有些姓名中间或末尾还有类似空格的字符没被去掉,但它们显然已经不是一般的空格了,那么怀疑是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.首先是去除空格在进行比较……”尝试,输入全角下的空格,进行查找,结果惊喜出现,原来所有未剔除掉的类空格,是全角状态下输入的空格,并接证实了全角下输入的空格,其ASCII码值为41377。


名称栏目:oracle怎么排除字符,oracle怎么删除字段
本文地址:http://myzitong.com/article/dsiopps.html