保留汉字的话,可以用ASCII码来判断,例子如下
成都创新互联公司主营梓潼网站建设的网络公司,主营网站建设方案,重庆APP开发,梓潼h5小程序开发搭建,梓潼网站营销推广欢迎梓潼等地区企业咨询
使用ASCII码来区分中文和其它字符,中文的ASCII码值的范围是45217~63486,根据这个来实现,这种方式可以完美区分中文字符和其它字符。
create or replace function getCustText(custName varchar2) return varchar2 is
Result varchar2(100);
tmp_custName varchar2(100);
count_str number;
i number:=1;
str_ascii number;
current_char varchar2(10);
begin
select length(custName) into count_str from dual;
while icount_str loop
current_char:=substr(custName,i,1);
select ASCII(current_char) into str_ascii from dual;
if str_ascii45216 then
tmp_custName:=tmp_custName||current_char;
end if;
i:=i+1;
end loop;
Result:=tmp_custName;
return(Result);
end getCustText;
通用的方式则是用正则表达式
用 substr
比如:substr(colname,1,length(colname) - 3)
oracle的substr函数的用法
取得字符串中指定起始位置和长度的字符串 substr( string, start_position, [ length ] )
如:
substr('This is a test', 6, 2) would return 'is'
substr('This is a test', 6) would return 'is a test'
substr('TechOnTheNet', -3, 3) would return 'Net'
substr('TechOnTheNet', -6, 3) would return 'The'
select substr('Thisisatest', -4, 2) value from dual 结果是 te
select substr('emros',-3,1) value from dual 结果是 r
substr('abcde',-6) = null
substr('abcde',-5) = 'abcde'
substr('abcde',-4) = 'bcde'
substr('abcde',-3) = 'cde'
substr('abcde',-2) = 'de'
substr('abcde',-1) = 'e'
substr('abcde',-0) = 'abcde'
实现的方法和详细的操作步骤如下:
1、第一步,新建一个测试表,见下图,转到下面的步骤。
2、第二步,执行完上面的操作之后,将测试数据插入,见下图,转到下面的步骤。
3、第三步,执行完上面的操作之后,查询表中数据,可以发现字段中带“-”字符,见下图,转到下面的步骤。
4、第四步,执行完上面的操作之后,编写sql,把字段中的字符‘-’去掉,代码见下图。这样,就解决了这个问题了。
表示不知道怎么去除英文字母
如果我是你的话,看你这个查询结果,是不是只是想把最后的 “!csl_……” 给删了?
你可以substr(权限模块,0,instr(权限模块,'!csl_'))啊。只针对我看到的你的这张图片,看着有点规律可这样用。
select substr(item,1,(length(item )-1) from tablename where .....;
item 表示表列名 只是相对于最后一个字符是k写的
操作:
1、先在Excel中将这一列值加前缀,将 user_code的值变成字符型,如原来的001,002变成N001,N002,
2、将变后的Excel表导入到Oracle中,
3、用Uperdate 语句修改user_code列,去掉前缀字母“N”。