Oracle 数据库使用 sql语句 :    select lengthb('输入字符串') from dual  ,  来计算 字符串 所占的字节长度(比如,一个汉字3个字节),但是用这个lengthb函数时,输入字符串的长度不能超过4000,这样遇到一些超长字符串就不行了,因此,需要用下面的三个vb.net函数来配合获取:

Private Function getStrLength_long(strInput As String) As Integer

'Try

Dim list_strs As List(Of String) = getList_shortStrs(strInput)

Dim totalLength As Int16 = 0

For Each _str In list_strs

totalLength += getStrLength_short(_str)

Next

Return totalLength

'Catch ex As Exception

'    MessageBox.Show("当前输入的有特殊字符,不容许 " & ex.ToString)

'    Return 0

'End Try

End Function

 

''' <summary>

'''   这个函数的功能,是将输入的一个长字符串转化为 由若干条较短的字符串组成的列表

'''     本函数是为了测算字符串的长度而做配套的,

'''     oracle在测算字符串长度时,字符串长度不能超过4000个字节,否则会出错

'''   所以,将一条长字符串转化为若干条短字符串,对每条短字符串分别测算长度,再累加起来,即长字符串的长度

''' </summary>

''' <param name="strInput">输入的一个长字符串</param>

''' <returns></returns>

Private Function getList_shortStrs(strInput As String) As List(OfString)

Dim lengthValue As Int16 = 1000    '  阈值, 短字符串的长度

'  之所以定为 1000 ,是因为即使这1000个字符全是汉字,1000 *3 = 3000,仍然小于 4000

Dim list_strs As List(Of String) = New List(Of String)

Dim totalLength As Int16 = strInput.Length    '  名义上的总长度

If totalLength < lengthValue Then  '  如果名义长度 小于 阈值

list_strs.Add(strInput)

Return list_strs   '  返回

End If

'  现在知道该字符串 的长度 超过阈值了,需要处理

Dim ii = 0

While (ii + 1) * lengthValue <= totalLength    '  对长字符串进行 分段

list_strs.Add(strInput.Substring(ii * lengthValue, lengthValue))

ii += 1

End While

'  最后一小段字符串

list_strs.Add(strInput.Substring(ii * lengthValue, strInput.Length - ii * lengthValue))

Return list_strs   '   返回

End Function

'    下面这个函数只能对较短的字符串(长度不超过4000)判断长度

Private Function getStrLength_short(strInput As String) As String

If strInput.Length = 0 Then

End If

'   下面,直接根据Oracle数据库的判读字符串长度的方法来判断

'        lengthb(string)计算string所占的字节长度:     select lengthb('¥') from dual

Dim strSql As String = "select lengthb('" & strInput & "') from dual"

Dim rs AsNew ADODB.Recordset

Dim da As New Data.OleDb.OleDbDataAdapter()

Dim cmd AsNew ADODB.Command

cmd.CommandText = strSql

cmd.ActiveConnection = conn

cmd.CommandType = CommandType.Text

'Try

rs = cmd.Execute()       '  执行

'Catch ex As Exception

'    'MessageBox.Show("当前输入的字符串有特殊字符,无法判断长度")

'    Return "过长或特殊字符,无法判断长度"

'End Try

If Not rs.EOF Then

Return rs.Fields(0).Value.ToString

End If

Return ""

End Function

根据 oracle 标准计算超长字符串的长度的更多相关文章

  1. JS计算文本字符串字节长度和像素长度的方法

    来源:js获取字符长度并计算px宽度 - [云]风过无痕 - 博客园 (cnblogs.com) <!DOCTYPE html> <html lang="en"& ...

  2. PHP 统计中文字符串的长度

    中文网站一般会选择两种编码:gbk/gb2312或是utf-8. gbk编码下每个中文字符所占字节为2,例: $zhStr = ‘您好,中国!’; echo strlen($zhStr); // 输出 ...

  3. Oracle 超长字符串分割劈分

    Oracle 超长字符串分割劈分,具体能有多长没测过,反正很大.... 下面,,,,直奔主题了: CREATE OR REPLACE FUNCTION splitstr(p_string IN clo ...

  4. 应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) String.prototype.len=function(){return this.replace(/[^\x00-\xff]/g,"aa").length;}

    应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) String.prototype.len=function(){return this.replace(/[^\x00-\xff] ...

  5. PHP计算字符串的长度

    <?php /** * 计算字符串的长度(汉字按照两个字符计算) * * @param string $str 字符串 * * @return int */ function str_len($ ...

  6. JS计算字符串的长度

    最近项目上经常要用到计算字符串的长度的问题,有时需要按照byte进行计算长度,所以我就想在页面上用js实现,于是就到网上查了相关的资料,发现确实有很多的版本,这里给出两个比较好用的. //方法一:逐个 ...

  7. js混合计算字符串字节长度

    js混合计算字符串字节长度 function getBt(str) { ) { var char = str.match(/[^\x00-\xff]/ig); : char.length); } el ...

  8. Java 按字节计算字符串的长度

       在<从后向前截取指定长度的字符串>中介绍了如何截取字符串,本文介绍如何统计字符串的字节长度. import org.slf4j.Logger; import org.slf4j.Lo ...

  9. SqlSever基础 len函数 计算前后都有空格的字符串的长度时

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

随机推荐

  1. 【华为云实战开发】8.如何快速搭建C#网站并实现持续集成?【华为云技术分享】

    1 概述 1.1 文章目的 本文通过一个实例介绍如何使用软件开发服务DevCloud完成一个C#Web项目的开发. 1.2 项目详情 1. 项目名称:超级冷笑话网站 2. 项目简介:一个Web网站,包 ...

  2. 项目中使用Redis的游标scan的一些小问题

    最近项目中有一个需求就是在下拉中要筛选车辆列表,本来想着是在内存中全部用程序去遍历处理,但发现数据有点多,一个个去处理会有点慢.然后就找到了redis的游标 感觉这个能满足我的需求,我可以把key存成 ...

  3. $.fn.extend 与 $.extend的区别

    今天看到别人写的jquery 代码都是这样的 $.fn.extend 所以查询了一下,因为自己不是前端开发,看到这样写的,感觉很牛逼.从百度上搜到的感觉解释的还是挺好的,作为记录,方便以后查找. 搜索 ...

  4. 安装Python,输入pip命令报错———pip Fatal error in launcher: Unable to create process using

    今天把Python的安装位置也从C盘剪切到了D盘, 然后修改了Path环境变量中对应的盘符:D:\Python27\;D:\Python27\Scripts; 不管是在哪个目录,Python可以执行了 ...

  5. ASP.NET Core MVC 502 bad gateway 超时如何处理

    在网页程序运行需要较长时间运行的时候,ASP.NET Core MVC会出现502 bad gateway请求超时情况.一般默认的超时时间都比较短,我们需要在 web.config 中配置一下.其中  ...

  6. 更改用户host留下的坑

    前言:  我们在创建数据库用户的时候都会指定host,即一个完整的用户可描述为 'username'@'host' .创建用户时不显式指定host则默认为%,%代表所有ip段都可以使用这个用户,我们也 ...

  7. ThinkPHP3.2.3:使用模块映射隐藏后台真实访问地址(如:替换url里的admin字眼)

    例如:项目应用目录/Application下模块如下,默认后台模块为Admin 现在需要修改后台模块的访问地址,以防被别有用心的人很容易就猜到,然后各种乱搞... (在公共配置文件/Applicati ...

  8. c#执行sql超时

    超时分为多种,SqlConnection有超时选项, SqlDataAdapter也有超时选项设置如下: SqlConnection:就用链接字符串给予的Timeout设置就行单位秒: SqlData ...

  9. (原)pytorch中使用TensorRT

    转载请注明出处: https://www.cnblogs.com/darkknightzh/p/11332155.html 代码网址: https://github.com/darkknightzh/ ...

  10. MySQL数据库(七)--索引

    一 .介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语 ...