首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用于支点的Oracle REGEXP_SUBSTR列名

用于支点的Oracle REGEXP_SUBSTR列名
EN

Stack Overflow用户
提问于 2014-10-14 03:00:30
回答 2查看 890关注 0票数 1

我正在使用PL/SQL Developer v10开发Oracle 11g数据库。

在我们的系统中,我们有一个问答表,对于每个被回答的问题,我需要对每个客户进行“扁平化”。

一组问题在问题描述中有特定的代码(PIFQ),这使得以下脚本成为可能。简单地说是UPPER(substr(q.questiondescription,1,6)),然后转到可能的代码列表上。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 select * from (
                    select
                      tqs.transactiondetailid as transactiondetailid,
                      q.productid as productid,
                      tqs.answer as QAnswer,
                      UPPER(substr(q.questiondescription,1,6)) as QDesc,
                      tqs.transactionversion as transactionversion
                    from TRANSACTIONDETAILQSHIS tqs
                    inner join question q on q.questionid = tqs.questionid and 
                    q.questiondescription like 'PIFQ%'
    ) pivot (
    min(QAnswer) for QDesc in (
    'PIFQ01','PIFQ02','PIFQ03','PIFQ05','PIFQ06','PIFQ07','PIFQ08','PIFQ09','PIFQ10',
    'PIFQ11','PIFQ12','PIFQ13','PIFQ14','PIFQ15','PIFQ16','PIFQ17','PIFQ18','PIFQ19','PIFQ20',
    'PIFQ21','PIFQ22','PIFQ23','PIFQ24','PIFQ25','PIFQ26','PIFQ27','PIFQ28','PIFQ29','PIFQ30',
    'PIFQ31','PIFQ32','PIFQ33','PIFQ34','PIFQ35')
    )

结果是在TRANSACTIONDETAILQSHIS中回答的所有问题的一行。

现在其他的问题集有三个不同长度的代码(DT,WIF,WT)。

一些例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DT01. Are you married?
DT05. Do you have children?
WIF1.1.1 First Name
WIF1.2 Date Of Birth
WIF7.10 How many other properties do you own?
WIF14.3.7 Post Code
WIF15 Notes to solicitor
WT01. Will Type

没有一个代码之间有空格,后面有空格,但其他所有代码都没有。我想在这里使用REGEXP_SUBSTR提取支点的代码,并使用相同的逻辑来捕获QDesc。我们谈论的是1000多个问题,所以我宁愿避免列出代码。

我被困在做regex (这只是一部分,选择正确的问题代码,但在我完成它-这将是小菜一碟)。我的自动取款机是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select UPPER(REGEXP_SUBSTR(q.questiondescription,'(WIF|DT|WT)\d{1,2}.')) from question q

它确实选择了第一个组(WIF|DT|WT)和后面的第一个数字

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DT01. Are you married?
DT05. Do you have children?
WT01. Will Type

我如何实现能够捕获.的逻辑,以及在结束时没有它们的逻辑(WIF15)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
WIF1.1.1 First Name
WIF1.2 Date Of Birth
WIF7.10 How many other properties do you own?
WIF14.3.7 Post Code
WIF15 Notes to solicitor
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-14 03:11:25

这将适用于'(WIF|DT|WT)[([:digit:]|.)]*'

SQLFiddle演示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
with my_data(str) as
(
select 'WIF1.1.1 First Name' from dual
union all
select 'WIF1.2 Date Of Birth' from dual
union all
select 'WIF7.10 How many other properties do you own?' from dual
union all
select 'WIF14.3.7 Post Code' from dual
union all
select 'WIF15 Notes to solicitor' from dual
)
select str, regexp_substr(str,'(WIF|DT|WT)[([:digit:]|.)]*') as result from my_data;

结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
STR                                           RESULT
--------------------------------------------------------
WIF1.1.1 First Name                           WIF1.1.1
WIF1.2 Date Of Birth                          WIF1.2
WIF7.10 How many other properties do you own? WIF7.10
WIF14.3.7 Post Code                           WIF14.3.7
WIF15 Notes to solicitor                      WIF15
票数 3
EN

Stack Overflow用户

发布于 2014-10-14 03:08:13

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(WIF|DT|WT)\d{1,2}.?

尝试this.Make .可选。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26359188

复制
相关文章
Oracle函数REGEXP_SUBSTR结合CONNECT BY
'Student001,Student001,Student002,Student002,Student003'
阿贾
2021/02/08
4.9K0
不同数据库中对以逗号分割的字符串筛选操作处理方案总结
无论是哪种数据库的实现方式,最终都是通过按逗号分割字符串列,并转为数组或集合类似的形式,再判断单项参数是否在这个集合之中,最后使用AND或OR组合实现筛选逻辑。
易兮科技
2022/12/02
1.7K0
【Oracle】查询某张表的列名及备注
查询某张表的列的备注 select COLUMN_NAME 列名, COMMENTS 注释 from user_col_comments where table_name = '表名' 返回结果: 列名 注释 CREATE_TIME 创建时间 ... ... 查询某张表的列定义 select COLUMN_NAME 列名, DATA_TYPE 类型, DATA_LENGTH 长度 from USER_TAB_COLUMNS where TABLE_NAME = '表名'; 返回结果: 列名 类型 长度
tonglei0429
2021/08/27
2.4K0
产业互联网的「支点」
阿基米德曾经说过,「给我一个支点,我就能撬动地球。」这句话告诉我们,只要我们能够找到任何事物的「支点」,都可以获得事半功倍的效果。这一点,在产业互联网行业,同样是适用的。
孟永辉
2022/03/28
2820
产业互联网的「支点」
使用KVM克隆用于Oracle DB的主机
首先,通过现有的vm1「在上篇文章 使用KVM创建OEL虚拟机 已创建」克隆出一个vm,名字叫做db1,然后修改一些配置,使其更适用于Oracle DB的主机。
Alfred Zhao
2023/01/08
7400
选对支点 找到 ToB SaaS 的增长真相
ToB既然是门生意,长期不盈利就要关闭。好在对于SaaS来说还有另一条出路:如果目前还看不到能盈利,那你就必须有高增长。
人称T客
2019/09/17
6580
选对支点 找到 ToB SaaS 的增长真相
“大数据”需要“小支点”
近几年,数据作为重要资产得到了重新认识和高度重视,社会各界对大数据的热度也是空前高涨,对大数据的期望和寄托也是远非一个"大"字可以形容。为了在大数据产业发展中占得先机,我国各省市都在加快推进大数据产业布局,积极推动各领域的创新应用,试图勾勒出未来大数据产业的发展路径,建立起无所不在的大数据应用场景。虽然大数据在某些领域的发展模式稍微清晰化了一些,但大部分领域的发展脉络还是不甚清晰的,所以还是希望先找准大数据应用与产业发展的"小支点",保持耐心,以点带面,不断实现联动发展。现根据国脉互联在各省市所做的大数据创
灯塔大数据
2018/04/09
6560
“大数据”需要“小支点”
【已解决】ORA-01722: invalid number
一、问题提示 执行Oracle的sql语句提示【ORA-01722: invalid number】无效数字错误。
Maynor
2023/10/13
5K0
【已解决】ORA-01722: invalid number
【说站】mysql中regexp_substr函数的使用
1、返回字符串expr中匹配模式pat的子串,如果找不到匹配的子串,返回NULL。
很酷的站长
2022/11/24
2.1K0
【说站】mysql中regexp_substr函数的使用
修改表名列名mysql_怎么修改mysql的表名和列名?
在mysql中,可以通过“ALTER TABLE 旧表名 RENAME 新表名;”语句来修改表名,通过“ALTER TABLE 表名 CHANGE 旧字段名/列名 新字段名/列名 新数据类型;”语句来修改列名。
全栈程序员站长
2022/08/30
11.8K0
修改表名列名mysql_怎么修改mysql的表名和列名?
DataFrame中文列名对齐的问题
然而我的强迫症又发了,标题为什么对不齐啊。网上一研究,是因为标题是中文所致,解决方法:
用户1075292
2020/02/18
2.8K0
DataFrame中文列名对齐的问题
拼接字符串SQL需求
同事提了个需求,表中一个字段,存储格式例如abc_x_cd,需要通过SQL拼接出另外一个值,例如abc_x_cd abc x cd,即根据原始值,按照"_"分割,按照每个部分,再通过空格,和原始值拼接。
bisal
2021/09/06
1.3K0
SQL--动态列名
前几天遇到一个问题,就是查询时,列名是不固定的,是动态的,是一个传递过来的变量,简写如下:
IT云清
2019/01/22
2.4K0
字符转换的SQL需求
前两天朋友提了一个和SQL有关的问题,准确地说,是和字符串转换有关的,首先我们创建测试表,用模拟数据进行说明,
bisal
2019/08/16
1K0
Excel表列名称
这道题类似于10进制转化2进制,通过辗转相除求出各个位置上的数字。但这里有个坑,2进制时它是满2进1,是0 - 2。A - Z是26个数,这里A为1,即1 - 26(实际上是27进制,但是又没有0位)。我们需要把他各个位置上的数看成0 - 25,即26进制。这样的话,在每次取模的时候,我们需要把当前的数进行减一处理。
_kyle
2020/12/01
1.4K0
Oracle 10.2.0.4 sql关联查询语句中含有 connect by 导致报错出现ORA-00600
写了个视图导致出现报错:网上说是Oracle 10.2.0.4和10.2.0.3版本的一个bug
星哥玩云
2022/08/18
5650
Oracle 10.2.0.4 sql关联查询语句中含有 connect by 导致报错出现ORA-00600
中兴新支点系统离线安装ceph 16.2.10
中兴新支点操作系统基于Linux稳定内核,分为嵌入式操作系统(NewStart CGEL)、服务器操作系统(NewStart CGSL)、桌面操作系统(NewStart NSDL),经过近10年专业研发团队的积累和发展,产品形成安全加固、自主可控、易用管理的突出优势。目前,中兴新支点操作系统已在国内外各大电信运营商、国有大中型企业及电子政务解决方案中投入使用,服务于交换网络、核心网络、骨干网络、智慧城市、视频监控等系统底层。 以上转自某乎。
没有故事的陈师傅
2023/05/18
9592
中兴新支点系统离线安装ceph 16.2.10
Oracle中的正则表达式(及函数)详解
在介绍函数前,这里先说明一下Oracle中正则表达式运算符及其描述。 如果不知道他们有什么用,或者也不知道描述说的是什么,没关系,可以先看后面的介绍,就知道他们的含义了。
一觉睡到小时候
2019/07/03
21.3K0
Oracle中的正则表达式(及函数)详解
oracle查询结果替换指定字符串_oracle按字符截取
注:oracle的concat函数只支持两个参数的方法,即只能拼接两个参数,如要拼接多个参数则嵌套使用concat可实现,如:
全栈程序员站长
2022/11/05
3.7K0
点击加载更多

相似问题

用于模式随机出现的oracle regexp_substr

11

Oracle regexp_substr

13

REGEXP_SUBSTR,Oracle

11

用于代码提取和连接的Oracle regexp_substr

13

Oracle : Regexp_substr

43
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文