通过逗号对字符串字段进行分割,并返回多行,通过使用regexp_substr()函数实现. SQL示例: select regexp_substr(q.nums, '[^,]+', 1, rownum,'i'), names from (select '1,2,3' nums, '张三' names from dual) q connect by rownum <= LENGTH(q.nums) - LENGTH(REGEXP_REPLACE(q.nums, ',', '')) + 1; 结果展…
Oracle数据库的两个字段值为逗号分割的字符串,例如:字段A值为“1,2,3,5”,字段B为“2”.想获取两个字段的交集(相同值)2,获取两个字段的差集(差异值)1,3,5. 一.最终实现的sql语句 1.获取交集(相同值): , rownum) id from (select '1,2,3,5' id from dual) connect intersect -- 取交集 , rownum) id ' id from dual) connect ; /*结果: 2 */ 2.获取差集(差异值…
我们知道在Oracle中存的guid是16进制字符串,而在我们的C#代码中存的是guid对象,这样我会就要进行转换, 下面给出了两者进行转换的方法: public class Guid2RawProcess { /// <summary> /// 转换 成16进制字符 /// </summary> /// <param name="text">The text.</param> /// <returns>System.Stri…
我在Oracle中给一个用户Id字段设置为Number类型,使用JDBC在完成ORM的时候,以为其可以自动转换为Integer,因为我的POJO类id使用的就是Integer.但事实是,我在测试的时候,发现所有的用户id全为null,还在奇怪明明数据库中id是有值的,为什么取不到? 原因在于Oracle的Number类型映射为Java类型中的 java.math.BigDecimal (不可变的.任意精度的有符号十进制数)类型,并不是我简单认为的 Integer ,还会报一个错误: 就是说Big…
比如字段A: 'ab,cd,ef,gh'字段B: 'aa,bb,cc,dd' 没有相同值 字段A: 'ab,cd,ef,gh'字段B: 'aa,bb,cd,dd' 有相同值cd 1.CREATE OR REPLACE TYPE ty_str_split IS TABLE OF VARCHAR2 (4000);2.CREATE OR REPLACE FUNCTION cux_pub_str_split (p_str IN VARCHAR2, p_delimiter IN VARCHAR2)RETU…
例如: 表User中有一个字段 salary  Number(10,3), 如果想把字段salary的类型提高精度到salary  Number(10,6),保留六位小数, 解决办法:1,ALTER TABEL USER MODIFY SALARY NUMBER(13,6); 解释:number类型刚开始是,长度10位,3位小数,如果想增加3位小数,对应的长度也必须增加,否则无法修改.所以NUMBER(13,6);这样就可以提高精度了,…
SQL代码 列转行 select REGEXP_SUBSTR(a.rolecode ,,l) rolecode from ( select 'a,aa,aaa' rolecode from dual ) a, () b 或者 with a as (select 'ABC,AA,AD,ABD,JI,CC,ALSKD,ALDKDJ' id from dual) ,rownum) id from a connect by rownum <= length(regexp_replace(id,'[^,]…
需求是表里的某个字段存储的值是以逗号分隔开来的,要求根据分隔的每一个值都能查出来数据,但是不能使用like查询. 数据是这样的: 查询的sql如下: select * from ( select guid, regexp_substr(st_responsible, '[^,]+', 1, level) responsible from tt_cancle_responsible connect by level <= regexp_count(st_responsible, ',') + 1…
CREATE OR REPLACE FUNCTION "F_SPLIT" (p_str IN CLOB, p_delimiter IN VARCHAR2) RETURN ty_str_split IS j ; i ; ; len1 ; ); str_split ty_str_split := ty_str_split(); BEGIN len := LENGTH(p_str); len1 := LENGTH(p_delimiter); WHILE j < len LOOP j :…
http://www.3lian.com/edu/2012/12-01/47252.html Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中. 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用. 执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行, DOS中可以执行时由于 在oracle 8i 中 安装目录/ora8…
本文由 www.169it.com 搜集整理 如果一个C字符串中同时包含可打印和不可打印的字符,如果想将这个字符串写入文件,同时方便打开文件查看或者在控制台中打印出来不会出现乱码,那么可以将字符串中的不可打印字符转换成16进制,此处提供一个函数供使用: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 void printhex(unsigned char *src,int len) {     …
大多数开发者应该都遇到过在mysql字段中存储逗号分割字符串的经历,无论这些被分割的字段代表的是id还是tag,这个字段都应该具有如下几个共性. 被分割的字段一定是有限而且数量较少的,我们不可能在一个字符串中存储无限多个字符 这个字段所属的表与这个字段关联的表,一定是一对多的关系 比如下面这个表结构所代表的content与tag这两个对象 mysql> SELECT * FROM content; +----+------+ | id | tags | +----+------+ | 1 | 1…
sys_guid()  -  唯一索引 在Oracle中可以用SYS_GUID()来生成一个guid,相当于msSql中的newid(). 在Oracle9i和Oracle 10g 里SYS_GUID产生得到的数据是32 位的,如:234E45F0077881AAE0430AA3034681AA 但Oracle中的guid与msSql中的guid格式不完全相同. 将Oracle中的guid分割成为 Windows系统 ObjectId 的格式:{8-4-4-4-12} ,下面给出两种解决方法: …
平时工作中可能会遇到当试图对库表中的某一列或几列创建唯一索引时,系统提示 ORA-01452 :不能创建唯一索引,发现重复记录. 下面总结一下几种查找和删除重复记录的方法(以表CZ为例): 表CZ的结构如下: SQL> desc cz Name Null? Type ------------------------------------------------------------------- C1 ) C10 ) C20 ) 删除重复记录的方法原理: (1).在Oracle中,每一条记录…
Oracle把逗号分割的字符串转换为可放入in的条件语句的字符数列   前台传来的字符串:'589,321' SELECT*FROM TAB_A T1 WHERE  T1.CODE  IN ( SELECT REGEXP_SUBSTR('589,321','[^,]+', 1, LEVEL) FROM DUAL CONNECT BY REGEXP_SUBSTR('SMITH,ALLEN,WARD,JONES', '[^,]+', 1, LEVEL) IS NOT NULL )…
场景: 表名:testsuer id     name 1       小红,小李,李红,小法 要结果值为: 1     小红 1     小李 1     李红 1     小法 MYSQL函数解释: substring_index(str,delim,count) 说明:substring_index(被截取字段,关键字,关键字出现的次数) JOIN:这个join最基本原理是笛卡尔积.通过这个方式来实现循环 INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录. LEF…
如何把用逗号等字符隔开的字符串转换成列表,下面依逗号分隔符为例: 比如有一个字符串,其值为:香港,张家港,北京,上海用SQL把这个字符串转换成列表的方法是: 1.方法一 WITH A AS (SELECT '香港,张家港,北京,上海' A FROM DUAL) ,SUBSTR(A,C),SUBSTR(A,C,B-C)) city FROM ( ,) C FROM( ,LEVEL) B,LEVEL LV FROM A CONNECT ) ) 输出结果是: 香港 张家港 北京 上海 应用举例:如果t…
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;}…
最近在处理文本字符串时,没一行数据都是按照逗号分割的,每个字段值一般情况是带有双引号的,但是有的字段值里面还包含逗号,甚至有的字段就没有双引号,这个分割起来就有点麻烦了 下面说一下我解决方法,如果谁有更好的方法,欢迎加入讨论O(∩_∩)O~ /** * Java字符串逗号分割解析方法 * 本专门针对双引号中还有逗号或者某个字段无双引号的情况而设计的 * 例如要将字符串String sss="101,\"a\",\"中国,江苏\",\"b\&quo…
原文:[原创]SQL 把表中字段存储的逗号隔开内容转换成列表形式 我们日常开发中,不管是表设计问题抑或是其他什么原因,或多或少都会遇到一张表中有一个字段存储的内容是用逗号隔开的列表. 具体效果如下图: ------> 从左边图转换成右边图,像这种需求,我们难免会遇到. 今天我写了个存储过程来解决这种问题.主要方式是利用master..spt_values表. 具体存储过程如下: -- Author: LHM -- Create date: 2015-01-10 -- Description: 把…
oracle中字符串连接用|| create or replace procedure testIf(idid number) is v_name stu.name%type; v_age stu.age%type; begin then update stu where id = idid; select age into v_age from stu where id = idid; dbms_output.put_line('age'||v_age);--oracle中字符串连接用|| e…
oracle中一个字符串包含另一个字符串中的所有字符 --解决监理报告中所勾选的标段信息,与该用户所管理的标段字符串不匹配的问题. select * from a where instr(a,b)>0;这个只能实现B字段是A字段中的某一部分的时候,如果想要不论顺序或者不相邻的字符时,定义函数可以实现 create or replace function checks(v_a varchar2,v_b varchar) return number as    num number;    cou…
1.在oracle中,group by后将字符拼接.任务:在学生表中,有studentid和subject两个字段.要求对studentid进行group by分组,并将所选科目拼接在一起.oracle中sql语句如下. select studentid, listagg(subject, ',') within group(order by subject) from student group by studentid; 第一幅图是未分组的数据显示,第二幅图是分组后的字符串连接之后的显示.…
向左补全字符串 lpad(字段名,填充长度,填充的字符) ,') from dual; 向右补全字符串 rpad(字段名,填充长度,填充的字符) ,') from dual; 返回字符串小写 select lower('STUDENT') from dual; 返回字符串大写 select upper('admin') from dual; 单词首字符大写 select initcap('admin') from dual; 返回字符串长度 select length('中国') from du…
oracle中,约束.表名.Index等的名称长度限制最大只能30个字符…
问题描述 或许你会说一个中文字符占2个字节,这是一定的?如何计算一个字符串的字节数? 解决方案 在oracle中一个字符特别是中文占几个字节是不同的. 比如我创立一个表create table test_ly(a varchar2(4),b nvarchar2(4)) 你说a列能插入两个汉字吗? 错!最多能插入一个汉字加一个字母(或数字). 这是为什么?因为一个汉字在a字段中占了3个字节,其他字符(比如数字或者字母或者英文标点符号)占1个字节, 你说b列最多能插入多少个汉字,2个? 错!b列最多…
vi中如何替换某字符成“回车”? 在 vi 中::s/,/^M/g (you need to type CTRL-V <CR> to get a ^M here)VIM - Vi IMproved 6.3…
Oracle中常用的字符串函数有以下几种: 1.upper()---将字符串的内容全部转换为大写.lower()---将字符串的内容全部转换为小写.具体用法: select  upper('test'),lower('TEST')  from  dual 2.initcap()--将字符串的首字母变成大写.具体用法: select  enamel,initcap(ename)  from  emp 3.replace()--字符串替换函数.具体用法: select  ename,replace(…
go从文件中读取json字符串并转换 将要读取的文件的一部分 [ { "children": [ { "children": [ { "code": 110118, "name": "密云区" }, { "code": 110119, "name": "延庆区" } ], "code": 110000, "name&q…
转: Oracle中使用Table()函数解决For循环中不写成 in (l_idlist)形式的问题 在实际PL/SQL编程中,我们要对动态取出来的一组数据,进行For循环处理,其基本程序逻辑为: 1 2 3 4 5 6 7 8 9 10 11 12 create or replace procedure getidlist is   l_idlist varchar2(200); begin   l_idlist:='1,2,3,4';   for brrs in (select * fro…