原创作品。从 “深蓝blog” 博客,欢迎转载,请务必注明转载的来源。权法律责任。

深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/39966251

【格式】

截取函数。能够实现提取字符串中指定的字符数

substr( string, start_position, [ length ] )

string:源字符串

start_position:提取的位置,字符串中第一个位置始终为1

[ length ]:提取的字符数。假设省略,substr将返回整个字符串

【实验】

目标:

    体会substr函数的使用方法

实验思路:

    实现将某列上指定字符位数的数据插入到指定的列上

模拟现场需求:

    设想略微复杂一下。我们假定须要将ename列的内容更改为ename1列的内容。但此时ename1列的字段长度超过了ename列的字段要求的最大长度,经过查看发现出现ename1列字段超出ename列字段长度的原因是ename1列数据类型为char(15),并且实际有效数据长度不到7个字符。所以仅仅须要将ename1列的前7位字符所有提取出来插入到ename列就可以。这也说明对于定长char类型,当输入字符不足定长时是会用空格进行补位的。

说明:

    这样的实验想法的出现,事实上是映射了实际生产需求中的一个样例。在实际生产环境上。要实现把一个用户的信息某一列的数据抽取到另外一个用户上,但因为两者列的数据类型不同,存在空格致使字段长度超过了另外一个用户要求该列字段的长度,而两者不能够更改数据类型。可是有效的字段数是都符合这两个列的,因此想到使用substr来完毕这个操作。

SQL> create table hyl as select * from emp where 1=2;
--创建实验表
Table created SQL> select * from hyl;
--查询实验表,眼下数据为空
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------ SQL> alter table hyl add(ename1 char(15));
--向实验表中加入实验列ename1,用于模拟长字符字段
Table altered SQL> insert into hyl(ename1) select emp.ename as ename1 from emp;
--将emp表的ename列数据以定长字段的数据类型插入到了实验表hyl的ename1列上,此时ename1字段长度为15
14 rows inserted SQL> select * from hyl;
--查看插入到ename1列上的数据
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ENAME1
----- ---------- --------- ----- ----------- --------- --------- ------ ---------------
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER
14 rows selected SQL> select count(1) from hyl t where length(t.ename1)=15;
--验证一下,ename1列字段超过10的数据行数
COUNT(1)
----------
14 SQL> desc hyl;
--查看hyl表的表结构,能够看到ename1列为char(15)。ename列为varchar2(10)
Name Type Nullable Default Comments
-------- ------------ -------- ------- --------
EMPNO NUMBER(4) Y
ENAME VARCHAR2(10) Y
JOB VARCHAR2(9) Y
MGR NUMBER(4) Y
HIREDATE DATE Y
SAL NUMBER(7,2) Y
COMM NUMBER(7,2) Y
DEPTNO NUMBER(2) Y
ENAME1 CHAR(15) Y SQL> update hyl t set t.ename=t.ename1;
--更新ename列为ename1上数据时。报错了例如以下,提示ename字段长度(10)小于ename1字段长度(15)。无法完毕数据的更新
update hyl t set t.ename=t.ename1
ORA-12899: value too large for column "SCOTT"."HYL"."ENAME" (actual: 15, maximum: 10) SQL> update hyl t set t.ename=substr(t.ename1,1,7);
--使用substr函数。仅仅把ename1列的前7个字符的内容更新到ename列上
14 rows updated SQL> select * from hyl;
--再次查看hyl表,发现ename列的数据已经成功更新为enam1列上的数据
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ENAME1
----- ---------- --------- ----- ----------- --------- --------- ------ ---------------
SMITH SMITH
ALLEN ALLEN
WARD WARD
JONES JONES
MARTIN MARTIN
BLAKE BLAKE
CLARK CLARK
SCOTT SCOTT
KING KING
TURNER TURNER
ADAMS ADAMS
JAMES JAMES
FORD FORD
MILLER MILLER
14 rows selected SQL> desc hyl;
--再次查看hyl表的数据结构。体会怎样将ename1列数据类型为char(15)中前7个字符插入到数据类型为varchar2(10)的ename列上去的
Name Type Nullable Default Comments
-------- ------------ -------- ------- --------
EMPNO NUMBER(4) Y
ENAME VARCHAR2(10) Y
JOB VARCHAR2(9) Y
MGR NUMBER(4) Y
HIREDATE DATE Y
SAL NUMBER(7,2) Y
COMM NUMBER(7,2) Y
DEPTNO NUMBER(2) Y
ENAME1 CHAR(15) Y

原创作品。出自 “深蓝的blog” 博客。欢迎转载,转载时请务必注明出处,否则追究版权法律责任。

深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/39966251

版权声明:本文博客原创文章,博客,未经同意,不得转载。

SQL_substr功能测试的更多相关文章

  1. 关于web端功能测试的测试方向

    一.功能测试 1.1链接测试 链接是web应用系统的一个很重要的特征,主要是用于页面之间切换跳转,指导用户去一些不知道地址的页面的主要手段,链接测试一般关注三点: 1)链接是否按照既定指示那样,确实链 ...

  2. 几何服务,cut功能测试

    关于几何服务 几何服务用于辅助应用程序执行各种几何计算,如缓冲区.简化.面积和长度计算以及投影.在 ArcGIS Server 管理器中启动几何服务之后,您才能够在应用程序开发过程中使用该服务. 问题 ...

  3. Web应用功能测试测试点

    做了几年的功能测试,也经手了好几个Web应用的项目,在做项目当中积累了一些经验.在这里我对通用一些功能模块的测试点做个记录,一来梳理一下测试用例设计的思路,以便加快相似项目的测试用例的设计,二来有利于 ...

  4. 44、NLP的其他分词功能测试

    1. 命名实体识别功能测试 @Test public void testNer(){ if (NER.create("ltp_data/ner.model")<0) { Sy ...

  5. soapui中文操作手册(八)----Web服务的功能测试案例

    现在,让我们来看看在一个TestCase的功能测试. 展开 Simple TestSuite并双击Simple Login and Logout w. Properties Steps. 正如你所看到 ...

  6. (转载)关于web端功能测试的测试方向

    一.功能测试 1.1链接测试 链接是web应用系统的一个很重要的特征,主要是用于页面之间切换跳转,指导用户去一些不知道地址的页面的主要手段,链接测试一般关注三点: 1)链接是否按照既定指示那样,确实链 ...

  7. QEMU/KVM功能测试

    最近在对QEMU/KVM在HP服务器进行功能测试,项目刚刚启动,遇到不少问题,从Git上拿到最新的source build进行测试,在RHEL7.0a3 + Kernel version3.10 + ...

  8. 项目管理工具Redmine各功能测试

      Redmine 是一个开源的.基于Web的项目管理和缺陷跟踪工具.它用日历和甘特图辅助项目及进度可视化显示.同时它又支持多项目管理.Redmine是一个自由开放 源码软件解决方案,它提供集成的项目 ...

  9. API功能测试如何实施(转载自测试之道 微信公众号)

    什么是API 关于定义什么的,直接维基可得: API(Application Programming Interface,简称:API),又称为应用编程接口,就是软件系统不同组成部分衔接的约定.由于近 ...

随机推荐

  1. AC自动机---个人总结

    比较好的 AC自动机算法详解.. [转]http://www.cppblog.com/mythit/archive/2009/04/21/80633.html 个人总结:[图是盗用的..] ac自动机 ...

  2. 【mysql】关于子查询的一个例子

    假设表my_tbl包含三个字段a,b,c:现在需要查询表中列a的每个不同值下的列b为最小值的记录量. 比如表记录为: a  b  c 1  3  'cd' 2  3  'nhd' 1  5  'bg' ...

  3. SE 2014年4月1日

    一. 描述OSPF报文都有哪些,其作用? OSPF报文主要有:hello报文.DD报文.LSR报文.LSU报文和LSAck报文. Hello报文主要用来建立和维护邻居关系. DD报文是链路状态数据库的 ...

  4. 啊我V办我偶看篇未改片考i

    http://pan.baidu.com/share/link?shareid=3011665141&uk=338692646&third=15                http ...

  5. python面向对象的继承

    无话可说,继承主要是一些父类继承,代码是非常具体的 #!/usr/bin/env python #coding:utf-8 class Father(object):#新式类 def __init__ ...

  6. Cloudera hadoop-2.3.0-cdh5.1.0 在Centos 6.5 下的安装

    安装前准备 1.  虚拟机3个.安装Centos 6.5, 内存设置为4GB 2.  配置yum源为163(不配置,在安装软件时,慢的要死) 3. 关闭防火墙( iptables).disabled ...

  7. 自己动手写CPU之第六阶段(2)——移动操作指令实现思路

    将陆续上传本人写的新书<自己动手写CPU>(尚未出版),今天是第21篇,我尽量每周四篇 6.2 移动操作指令实现思路 6.2.1 实现思路 这6条移动操作指令能够分为两类:一类是不涉及特殊 ...

  8. 64地点 Windows 8/7 根据系统 32地点PLSQL 耦合 64 地点 Oracle 11g

    64地点 Windows 8/7 根据系统 32地点PL/SQL 耦合 64 地点 Oracle 11g     说明:安装后Oracle的 oci.dll 是64位的,而32位应用程序 PL/SQL ...

  9. Sybase Unwired Platform(SUP) 经常使用资源整理(不断更新中)

    提示:建议刚開始学习的人看三个东西,详见以下的详细内容.然后再去看论坛,官方技术支持站点等资源. SUP移动开发平台 中文视频讲座 SUP入门讲座(Wang Jun) SUP系列学习笔记 SUP实验 ...

  10. C++ - Identifier not found

     This is because forward declaration in C++: Compiler needs to know function prototype when functi ...