在oracle数据库中截取一个表名下的几个字段?

在oracle数据库中截取一个表名下的几个字段?,第1张

你的运气挺好,我发现所有数据的格式都是统一的,而且patid是第一个p的出现点,后面的分号都是第七个分号,syxh是第一个s的出现点,后面的分号是第九个,这样就很容易判断了。

举例,截取patid后面的数字

(1)定位 instr(R_DY_TEXT9,'p') 当然写成 instr(R_DY_TEXT9,'patid')也可以 ,二者是一样的

(2)定位第七个分号instr(R_DY_TEXT9,'',1,7)(判断第七个分号的位置,可能我数错了,这个你要自己好好看看)

(3)instr(R_DY_TEXT9,'patid')+6 这个是数组开头的位置,‘patid=’一共是六位,所以要加6

那么substr的截取长度就是instr(R_DY_TEXT9,'',1,7)-instr(R_DY_TEXT9,'patid')-6

合在一起就是(我写的没有试验过,可能需要一些微调(比如分号个数不对,截取开始位置不对,截取长度不对等等),具体的你可以找一条数据来测试一下,然后改变后面的参数就可以了)

substr(R_DY_TEXT9,instr(R_DY_TEXT9,'patid')+6 ,instr(R_DY_TEXT9,'',1,7)-instr(R_DY_TEXT9,'patid')-6)

翻译过来就是在R_DY_TEXT9字段中,从instr(R_DY_TEXT9,'patid')+6 位开始,截取长度为instr(R_DY_TEXT9,'',1,7)-instr(R_DY_TEXT9,'patid')-6的字符串

后面截取syxh也是一样的

substr(R_DY_TEXT9,instr(R_DY_TEXT9,'syxh')+5 ,instr(R_DY_TEXT9,'',1,9)-instr(R_DY_TEXT9,'syxh')-5)

二者截取出来了,就能判断了。

有两种办法可以删除表中的所有数据:

TRUNCATE TABLE 删除表中的所有行,而不记录单个行删除 *** 作。语法 TRUNCATE TABLE name 参数 name 是要截断的表的名称或要删除其全部行的表的名称。

Delete from tablename where 1=1

方法1:重建库和表:

一、只导出表结构

导出整个数据库结构(不包含数据):mysqldump -h localhost -uroot -p123456  -d database >dump.sql

导出单个数据表结构(不包含数据):mysqldump -h localhost -uroot -p123456  -d database table >dump.sql

二、只导出表数据:

导出整个数据库数据:mysqldump -h localhost -uroot -p123456  -t database >dump.sql

三、导出结构+数据

导出整个数据库结构和数据:mysqldump -h localhost -uroot -p123456 database >dump.sql

导出单个数据表结构和数据:mysqldump -h localhost -uroot -p123456  database table >dump.sql


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/6936487.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-30
下一篇2023-03-30

发表评论

登录后才能评论

评论列表(0条)

    保存