我记得我曾经在开发form的时候犯过这样一个错误,对于form中的某个字段,对应于数据库中某张表的字段,假设在数据库中这个字段一般也就用到20个汉字的长度,后来我在开发form的时候,设置item类型长度的时候,我惯性的设置成了50byte,想着就算是20个汉字,最多也就占40个byte长度嘛。可是,就因为这一个想当然,结果出现错误了,后来发现数据库字符集编码是utf8,那么应该设置为60。从那以后,每次涉及到给字段设置长度的时候,我都会特别注意下,到底是啥编码。

Oracle中,比较常见的可能是length、substr,至少我看到的大部分都是这两个,要不是昨天看代码发现了lengthb、substrb,估计我也遗忘了。length表示的是字符串的字符长度,lengthb表示的是字符串的字节长度;substr表示根据字符长度获取子串,substrb表示根据字节长度来获取字串。下面直接看例子来说明:

SELECT length('叶德华abc') -- length按字符计,汉字、英文、数字都是1个字符,故这里返回6
FROM dual;
SELECT lengthb('叶德华abc') -- length按字节计,我这里是UTF-8编码,汉字3个字节,英文一个字节,故这里返回12
FROM dual;
SELECT substr('叶德华abc', -- substr按字符截取,截取到a,返回:叶德华a
1,
4)
FROM dual;
SELECT substrb('叶德华abc',
1,
2) -- substrb按字节截取,2不足一个汉字长度,返回:两个空格
FROM dual;
SELECT substrb('叶德华abc',
1,
3) -- substrb按字节截取,3刚好是一个汉字长度,返回:叶
FROM dual;
SELECT substrb('叶德华abc',
1,
4) -- substrb按字节截取,4多余一个汉字少于两个汉字,返回:叶 加一个空格
FROM dual;

oracle中应该还有其他类似的方法,这里就不总结了,大概就是这么个意思。补充一下,据说在oracle中定义字符类型的时候默认的长度是byte,比如varchar2(20)表示的是20个字节长度,如果要定义成字符,则varchar2(20 char),不过,一般我们也都用字节定义。

oracle中length、lengthb、substr、substrb用法小结的更多相关文章

  1. length,lengthb,substr,substrb,instr小用

    --字符串的字符长度 select length('wm.dfw.士农工商.sda.人马ss.dfw.4.sdf.332.sf.qq.sd') from dual; --字符串的字节长度 select ...

  2. Oracle中INSTR、SUBSTR和NVL的用法

    Oracle中INSTR.SUBSTR和NVL的用法 INSTR用法:INSTR(源字符串, 要查找的字符串, 从第几个字符开始, 要找到第几个匹配的序号) 返回找到的位置,如果找不到则返回0. 默认 ...

  3. js中substring和substr的用法

    js中substring和substr的用法 substring 方法用于提取字符串中介于两个指定下标之间的字符 substring(start,end) 开始和结束的位置,从零开始的索引 参数    ...

  4. Oracle中 (+)与left join 的用法区别

    Oracle中 (+)与left join 的用法区别 原创 2017年01月11日 13:33:42 6648 select * from a,b where a.id=b.id(+); (+)写在 ...

  5. Spring mvc中@RequestMapping 6个基本用法小结

    Spring mvc中@RequestMapping 6个基本用法小结 小结下spring mvc中的@RequestMapping的用法. 1)最基本的,方法级别上应用,例如: @RequestMa ...

  6. 分组函数group by和Oracle中分析函数partition by的用法以及区别

    1.分组函数group by和Oracle中分析函数partition by的用法以及区别 2.开窗函数.

  7. 转:Spring mvc中@RequestMapping 6个基本用法小结

    Spring mvc中@RequestMapping 6个基本用法小结 发表于3年前(2013-02-17 19:58)   阅读(11698) | 评论(1) 13人收藏此文章, 我要收藏 赞3 4 ...

  8. oracle中regexp_like/instr/substr/replace介绍和例子

    ORACLE中的支持正则表达式的函数主要有下面四个: 1,REGEXP_LIKE :与LIKE的功能相似 2,REGEXP_INSTR :与INSTR的功能相似 3,REGEXP_SUBSTR :与S ...

  9. JAVA中字符串函数subString的用法小结

    本篇文章主要是对JAVA中字符串函数subString的用法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 String str; str=str.substring(int begi ...

随机推荐

  1. 你真的搞懂ES6模块的导入导出规则了吗

    前言 模块作为ES6规范的核心部分之一,在实际项目开发中经常会看到它的身影,那么我们是否真正了解它的相关规则呢,今天就带大家一起了解一下模块的导入导出规则 导入 ES6模块的导入(即import)大致 ...

  2. Linux命令之乐--time

    time用于统计命令执行花费的总时间 例一: [root@Director usr]# time ls bin etc games include java lib lib64 libexec loc ...

  3. hdu4525

    可以发现天的操作相当于*(k1+k2) 然后就很好判断了. 威威猫系列故事——吃鸡腿 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 6 ...

  4. ISP (互联网服务提供商)

    ISP(Internet Service Provider),互联网服务提供商,即向广大用户综合提供互联网接入业务.信息业务.和增值业务的电信运营商. ICP(Internet Content Pro ...

  5. centos中调整tmpfs分区的大小

    tmpfs是Linux/Unix系统上的一种基于内存的文件系统.tmpfs可以使用系统的内存或swap分区来存储文件.由此可见,tmpfs主要存储暂存的文件. tmpfs默认的大小是RM的一半,假如你 ...

  6. jquery使用replaceWith替换元素,但是替换的位置不对应的问题

    $("#itemList").replaceWith(htmlContent); 注: $("#itemList")处应为tr元素,如果是span元素或者div ...

  7. DOS和BAT批量提取修改文件名

    DOS命令窗口:开始-cmd-回车,进入DOS命令窗口 案例一.获取文件名 dir 1.输入"文件所在盘",回车,如: d: 2.输入"cd 文件夹位置",回车 ...

  8. Spring 拦截器的使用

    一.Web.xml配置 在Web.xml 配置Spring核心控制器DispatcherServlet接收所有请求 <servlet> <servlet-name>spring ...

  9. Orchard 与 ABP架构比较 (aspnetboilerplate)

    前言:  ABP框架经常在一些.NET群中听群友提起,以前也浏览过官网,大致了解它是一个框架,直到今天本人才正式下载源码入门 ... 经过两个小时的ABP中文文档入门(感谢各位辛勤的翻译者) ,大致了 ...

  10. Java/android 里ClassName.this和this的使用

    如果在内部类里面用this就是指这个内部类的实例,而如果用OuterClassName.this就是它外面的那个类的实例 ClassName.this这个用法多用于在nested class(内部类) ...