Oracle的Nvl函数

nvl( ) 函数

从两个表达式返回一个非null 值。

语法

NVL(eExpression1, eExpression2)

参数

eExpression1, eExpression2

如 果 eExpression1 的计算结果为 null 值,则 NVL( ) 返回 eExpression2。如果
eExpression1 的计算结果不是 null 值,则返回 eExpression1。eExpression1 和 eExpression2
可以是任意一种数据类型。如果 eExpression1 与 eExpression2 的结果皆为 null 值,则 NVL( ) 返回
.NULL.。

返回值类型

字符型、日期型、日期时间型、数值型、货币型、逻辑型或 null 值

说明

在不支持 null 值或 null 值无关紧要的情况下,可以使用 NVL( ) 来移去计算或操作中的 null 值。

select nvl(a.name,'空得') as name from student a joinschool b on a.ID=b.ID

注意:两个参数得类型要匹配

------------------------------------------------

在Oracle中提供了instr(strSource,strTarget)函数,比使用’%关键字%’的模式效率高很多。

instr函数也有三种情况:
instr(字段,’关键字’)>0相当于 字段like ‘%关键字%’
instr(字段,’关键字’)=1相当于 字段like ‘关键字%’
instr(字段,’关键字’)=0相当于 字段not like ‘%关键字%’
例子:
SELECT * FROM [user] WHEREinstr(uname ,’三’)>0
用法参照上面的Like 即可

特殊用法:
select id, namefrom user where instr(‘101914, 104703’, id) > 0;
它等价于
select id, namefrom user where id = 101914 or id = 104703;

在数据量比较少的时候,可以直接使用上面这两种方法,但是当数据量特别大的时候,我们就应该考虑效率的问题了。虽说在效率上Instr比like关键字方法效率要高出不少,但这也仅仅是在一定程度上而言,远不能满足我们的需要。

为什么关键字查询效率这么低呢?这是由于在利用这些关键字查询的时候,数据库系统不是通过索引来查询,而是采用顺序扫描的方式来查询。显然,真是这种技术特性,造成了Like关键字查询效率的低下。特别是在复杂查询或者大表查询中,用户可以明显感觉到速度比较慢。

---------------------------------------------------------

问题,执行一段代码反回一个字符串,这个串中就是要执行我多条SQL语句。怎样让它在ORACLE中通过呢。想来想去想到了动态SQL,EXECUTE IMMEDIATE 这是一个解析和执行标准SQL语句的语法。只要在这条字符串中格式化一下我们要执行的语句就可以了,比如这条要执行的多条SQL的字符串为:

delete tableA where Aid=1;update tableB where Bid=2;insert into tableC values(id,3,4);

像这样的SQL语句想一起执行是不可以的,只要加点格式化就OK了,

要这样:BEGIN EXECUTE IMMEDIATE 'delete tableA where Aid=1';EXECUTE IMMEDIATE 'update tableB where Bid=2';EXECUTE IMMEDIATE 'insert into tableC values(id,3,4)';END;

注意,一定要写好格式,比如END后的分号。这样就可以在ORACLE中执行这个字符串了。

摘自:https://blog.csdn.net/cpp1781089410/article/details/70226396/

Oracle中nvl()、instr()、及执行多条sql事务操作的更多相关文章

  1. oracle中查找某用户执行某张表的操作操作记录

    转载:http://www.cnblogs.com/nizuimeiabc1/p/9441937.html 1,首先查找表的操作记录 select * from v$sqlarea a where a ...

  2. 如何在Oracle中一次执行多条sql语句 (.net C#)

    关键是不能换行,要加上begin ...sql... end;     每个SQL用:隔开,end后面必须加: 以下是拷贝于:http://www.cnblogs.com/teamleader/arc ...

  3. (学)如何在Oracle中一次执行多条sql语句

    队长同学原来的地址:https://www.cnblogs.com/teamleader/archive/2007/05/31/765943.html队长同学原来的描述: 有时我们需要一次性执行多条s ...

  4. MySQL中的模糊查询 like 和 Oracle中的 instr() 函数有同样的查询效果

    注:MySQL中的模糊查询 like 和 Oracle中的 instr() 函数有同样的查询效果: 如下所示: MySQL: select * from tableName where name li ...

  5. c#中执行多条sql语句【ORA-00911: 无效字符】

    问题描述: 在plsql里执行多条sql语句的时候,使用“,”(逗号)分隔,测试可以执行多条,而在C#执行多条sql语句的时候[ORA-00911: 无效字符]. 有时我们需要一次性执行多条sql语句 ...

  6. Spring 中jdbcTemplate 实现执行多条sql语句

    说一下Spring框架中使用jdbcTemplate实现多条sql语句的执行: 很多情况下我们需要处理一件事情的时候需要对多个表执行多个sql语句,比如淘宝下单时,我们确认付款时要对自己银行账户的表里 ...

  7. ORACLE中查询语句的执行顺及where部分条件执行顺序测试

    Oracle中的一些查询语句及其执行顺序 原文地址:https://www.cnblogs.com/likeju/p/5039115.html 查询条件: 1)LIKE:模糊查询,需要借助两个通配符, ...

  8. oracle中nvl()函数

    oracle中nvl()函数  oracle的nvl函数的使用方法 通过查询获得某个字段的合计值,假设这个值位null将给出一个预设的默认值  select nvl(sum(t.dwxhl),1) f ...

  9. Mybatis+MySql 一个标签中执行多条sql语句 这个坑 ,我心中有一句MMP

    解决办法 转自网友: 亲测 解决了问题@ MySql默认是不支持这种骚操作的,但是并不代表不能实现,只需要在jdbc的配置文件中稍做配置: driver=com.mysql.jdbc.Driverur ...

随机推荐

  1. WebSphere ssl证书公钥少于2048问题处理

    WebSphere https默认使用的是安装时生成的IBM签名的证书,该证书密钥长度1024位在某些检查中会认为这不够安全.处理这个问题我们可以创建一个自签名的证书作为默认证书. 登录控制台,安全性 ...

  2. SpringBoot配置文件的加载位置

    1.springboot启动会扫描以下位置的application.properties或者application.yml文件作为SpringBoot的默认配置文件 --file:/config/ - ...

  3. vsCode快捷键设置

    // 快捷键设置 keyiing.json // 将键绑定放入此文件中以覆盖默认值 [     /* // 转换大写     {         "key" : "ctr ...

  4. 基于bootstrap的后台左侧导航菜单和点击二级菜单刷新二级页面时候菜单展开显示当前菜单

    本文使用的框架版本为: bootstrap3,Jquery2.1.0  (其他jquery可能会报错,菜单项不执行 效果如下: 1.在项目中引入框架: <link rel="style ...

  5. nyoj-0708-ones(dp)

    nyoj-0708-ones 题意:用1,+,*,(,). 这四个符号组成表达式表达数s(0 <= s <= 10000),且1最少时1的的个数 状态转移方程: dp[i] = min(d ...

  6. EtherCAT(扒自百度百科)

    EtherCAT(以太网控制自动化技术)是一个开放架构,以以太网为基础的现场总线系统,其名称的CAT为控制自动化技术(Control Automation Technology)字首的缩写.Ether ...

  7. 如何快速成为一名Linux运维工程师

    如今的互联网,绝大多数的网站.服务.游戏均是跑在Linux上面的,虽说Linux发行版众多,只要玩熟了一种发行版,了解了Linux精髓.基本架构.设计原理,其他都是触类旁通的,千万不要在选择哪一发行版 ...

  8. python 类方法中参数使用默认值的方法

    class A(): __init__(self, **arg): self.__dict__.update(arg)        def M(self, config=None, section= ...

  9. HTML编辑笔记1

    1.编写html ①新建一个记事本(以.html结尾) ②右击选择打开方式为文档 ③编写内容 ④用浏览器查看内容 2.html编写格式 <html> <head></he ...

  10. Hive/Hbase/Sqoop的安装教程

    Hive/Hbase/Sqoop的安装教程 HIVE INSTALL 1.下载安装包:https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-2.3 ...