在编写PL/SQL时,有时候我们需要处理这样一个输入的变量,它的格式是由多个值通过分隔符组成的字符串,如“1,2,3”,我们需要将这个变量加入到我们的SQL中,形成诸如in('1','2','3')的条件。

  下面的SQL可以把一个字符串分割成一个临时表,然后用于in条件:

SELECT * FROM TEST_TABLE WHERE ID in(

  SELECT REGEXP_SUBSTR ('1,2,3', '[^,]+', 1,rownum) val
  FROM DUAL
  CONNECT BY ROWNUM <= LENGTH ('1,2,3') - LENGTH(REPLACE('1,2,3',',',''))+1

);

  如果要处理的字符串含有英文逗号,则可以使用字符串组进行分割的,SQL如下:

SELECT REGEXP_SUBSTR ('11wxrd2wxrd33wxrd4wxrd5wxrd6', '[^wxrd]+', 1,rownum) val
FROM DUAL
CONNECT BY ROWNUM <= LENGTH ('11wxrd2wxrd33wxrd4wxrd5wxrd6') - LENGTH(REPLACE('11wxrd2wxrd33wxrd4wxrd5wxrd6','wxrd','xrd'))+1
;

说明:wxrd为分隔符,xrd为比分割符wxrd少一位的辅助替换字符串

需要确保的是在输入的字符串中不存在分隔符和辅助替换字符串。

PL/SQL中字符串变量的分割转化的更多相关文章

  1. PL/SQL中的变量案例解析

    1.标量: ag1: declare v_ename emp.ename%type;--自己称为单变量 begin select ename into v_ename from emp where e ...

  2. PL/SQL中的变量

    1.标量: ag1: declare v_ename emp.ename%type;--自己称为单变量 begin select ename into v_ename from emp where e ...

  3. Oracle PL/SQL编程之变量

    注: 以下测试案例所用的表均来自与scott方案,使用前,请确保该用户解锁. 1.简介 和大多数编程语言一样,在编写PL/SQL程序时,可以定义常量和变量,在pl/sql程序中包括有: a.标量类型( ...

  4. PL/sql中如何声明变量,常量,控制语句及for,loop,while和顺序控制的使用

    pl/sql 什么是PL/SQL PL/SQL是结合oracle过程语言和机构化查询运行(SQL) 的一种扩展语言.使用PL/SQL可以编写具有很多高级功能的程序,有以下优点 PL/SOL可以采用过程 ...

  5. PL/SQL(二):变量

    变量 标识符定义 PL/SQL程序设计中的标识符定义与SQL的标识符定义的要求相同.要求和限制有: 个字符. )首字符必须为字母. )不区分大小写. )不能使用SQL保留字. )对标识符的命名最好遵循 ...

  6. 在PL/SQL中调用Oracle存储过程

    存储过程 1 什么是存储过程? 用于在数据库中完成特定的操作或者任务.是一个PLSQL程序块,可以永久的保存在数据库中以供其他程序调用. 2 存储过程的参数模式 存储过程的参数特性: IN类型的参数 ...

  7. PL/SQL中直接写SQL语句和用EXECUTE IMMEDIATE方法的区别

    PL/SQL中直接写SQL语句和用EXECUTE IMMEDIATE方法的区别 在PL/SQL中在执行SQL语句时可以直接写SQL或者可以把一个SQL语句拼成一个字符串,如下: select * fr ...

  8. oracle PL/SQL(procedure language/SQL)程序设计(在PL/SQL中使用SQL)

    在PL/SQL程序中,允许使用的SQL语句只有DML和事务控制语句,使用DDL语句是非法的.使用SELECT语句从数据库中选取数据时,只能返回一行数据.使用COMMIT,  ROLLBACK, 和SA ...

  9. PL/SQL中LOOP循环控制语句

    在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...

随机推荐

  1. java泛型中? super T和? extends T的区别

    <? super T>表示包括T在内的任何T的父类,<? extends T>表示包括T在内的任何T的子类;请记住PECS原则:生产者(Producer)使用extends,消 ...

  2. sqlite3---终端操作

    进入沙盒路径 创建stu.sql数据库 sqlite3 stu.sql 创建表 create table if not exists Student (id integer primary key a ...

  3. (一)chrome扩展 - API小记

    browserAction 设置browser action的badge文字,badge 显示在图标上面 chrome.browserAction.setBadgeText({text:"i ...

  4. javascript两种定时器的使用及其清除

    <!--示例代码如下:--><!DOCTYPE html> <html> <body> <p>A script on this page s ...

  5. 百度PHP实习一面面试题-算法-二维有序矩阵的查找

    题目描述 有一个二维矩阵,每一行的元素,从左到右保持严格递增,每一列的元素,从上到下保持严格递增.查找给定元素elem,返回NULL或元素位置. 1 3 7 15 16 2 5 8 17 19 3 6 ...

  6. Jmeter实现WebSocket协议的接口和性能测试方法

    WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(full-duplex). 浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一 ...

  7. ocos 信号量

    信号量分为  :声明信号量.互斥信号量 转: ucos-ii学习笔记——信号量的原理   ucos-ii学习笔记——信号量的原理及使用 #include "INCLUDES.h" ...

  8. js 简单倒计时插件和使用方法

    // 倒计时插件 (function (){ function countdown(config){ var startDate = config.start ? new Date(config.st ...

  9. C语言中如何获得文件大小

    方法一: 获得文件大小需要用到2个函数:fseek() , ftell() fseek()函数: 原型:intfseek(FILE *stream, long offset, int fromwher ...

  10. NGINX配置小随笔

    达到以下效果: 1,特定目录被指定IP访问 2,不是指定的IP地址不能执行URI中特定字符串 3,特定目录中不能执行PHP文件 set $self_visit ''; if ( $request_ur ...