Oracle截取中英文混合字符串的处理

原创 2006年05月30日 08:14:00
declare @i int
set @i =30
while @i>0
begin
     update 表
     set 标题=left(标题,@i)
     where datalength(left(标题,@i))<=30
     and datalength(标题)>30
     set @i=@i-1
end

     减少循环

declare @i int
set @i =30
while @i>0 and exists (select 1 from 表 where datalength(标题)>30)
begin
     update 表
     set 标题=left(标题,@i)
     where datalength(left(标题,@i))<=30
     and datalength(标题)>30
     set @i=@i-1
end

      一样,导到临时表,更新好了再显示;注意效率问题,毕竟用函数判断效率不会好

if object_id('testfunc') is not null drop function testfunc
go
create function testfunc(@Title varchar(200), @len int) returns varchar(200)
as
begin
  declare @s varchar(200)
  set @s = @Title
  if datalength(@Title) > @len
  begin
    declare @i int, @n int
    set @i = 0
    set @n = @len
    while @i < @len - 1
    begin
      if ascii(@s) > 127
      begin
        set @i = @i + 1
        set @n = @n - 1
      end
      set @i = @i + 1
      set @s = right(@s, len(@s) - 1)
    end
    if @i = @len or ascii(@s) < 128
      set @s = left(@Title, @n)
    else
      set @s = left(@Title, @n - 1)
  end
  return(@s)
end
go
select 1 as id, dbo.testfunc('12345678', 5) as title
union select 2, dbo.testfunc('1234五六', 5)
union select 3, dbo.testfunc('1二三四五六', 5)
union select 4, dbo.testfunc('一二3四五六', 5)
union select 5, dbo.testfunc('一二三四五六', 5)
union select 6, dbo.testfunc('一', 5)
/*
id      title
-------------
112345
21234
31二三
4一二3
5一二
6一
*/
drop function testfunc

关于Java的中英文混合截取字符串的问题解决方法

      Java默认的获取一个字符的长度(不管是否是中英文)都是作为一个字节来处理,但是插入数据库(Oracle)时中文却占了2个字节, 这点搞得人很苦恼。在网上搜索时,找到两种好的解决方案,这里...
  • shenzhen_mydream
  • shenzhen_mydream
  • 2010年05月27日 13:51
  • 3062

ORACLE提取字符串中"汉字"串的解决办法

我在在实际工作中常常要使用去特殊字符的功能,特别是插入到数据库中的数据,我们为了保证数据的质量,往往需要对数据进行清洗,就是去掉特殊字符,我们处理问题的思路是:判断字符串中的每个字符是不是中文,如果是...
  • u013560667
  • u013560667
  • 2014年11月28日 10:15
  • 3152

oracle中length、lengthb、substr、substrb用法小结

oracle中length、lengthb、substr、substrb用法小结 我记得我曾经在开发form的时候犯过这样一个错误,对于form中的某个字段,对应于数据库中某张表的字段,假设...
  • zhangbingtao2011
  • zhangbingtao2011
  • 2016年05月12日 15:21
  • 6678

解决oracle取日期到页面为英文格式的问题

今天遇到一个这样的问题:在oracle数据中取出的数据到jsp页面显示的时候,均显示为英文格式的日期。 查阅了一些方法,最终得以解决: 代码如下: 首先导入: 然后在日期字段以这样的形式写: 创建...
  • chuan9966
  • chuan9966
  • 2015年02月25日 17:00
  • 636

Java 截取中英文混合字符串

题目: 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我...
  • yulei_qq
  • yulei_qq
  • 2015年04月16日 17:28
  • 2070

js截取中英文混合字符串

function _sub(str,len) {   var num = 0;   for (i = 0; i     var a = str.charAt(i);     if (/^[\...
  • u014017080
  • u014017080
  • 2016年11月08日 18:39
  • 359

subString中英文截取问题以及方法

解决中英文字符截取的方法。
  • spring123tt
  • spring123tt
  • 2011年06月01日 18:57
  • 5260

java按字节截取带有汉字的字符串的解法

由于接口使用的oracle字段长度为固定字节数,然后传进来的字符串估计比数据库字段的总字节数要大,那么截取小于数据库字节数的字符串。 自己参考网上的例子,整了个递归调用就可以了public stati...
  • cuker919
  • cuker919
  • 2013年12月12日 13:47
  • 30540

C#实现中英文混合字符串截取的方法

本文实例讲述了C#实现中英文混合字符串截取的方法,是C#字符串操作中非常常用的一个方法。分享给大家供大家参考之用。具体方法如下: 具体功能代码如下: /// /// 截取中英文混合字符串...
  • my98800
  • my98800
  • 2017年05月24日 22:56
  • 418

php截取中英文混合字符串

mb_strwidth($str, $encoding) 返回字符串的宽度 $str 要计算的字符串 $encoding 要使用的编码,如 utf8、gbk mb_strimwidth($st...
  • giscong
  • giscong
  • 2016年12月02日 09:53
  • 357
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle截取中英文混合字符串的处理
举报原因:
原因补充:

(最多只允许输入30个字)