sql - 如何从oracle sql中的内部查询输出中删除单引号
问题描述
我想从内部查询的输出中删除单引号:
select *from demo where codes in (select codes from demo_temp);
位列的数据类型是 varchar2
的输出select codes from demo_temp
是'201,601'
我希望输出为
select *from demo where codes in (201,601);---15rows
我在下面尝试过,但它不起作用:
select *from demo where codes in replace((select codes from demo_temp),'''','');--0rows
select *from demo where codes in (select replace(codes,'''','') from demo_temp);--0rows
解决方案
一种选择是拆分codes
为行(在子查询中):
SELECT *
FROM demo
WHERE codes IN ( SELECT REGEXP_SUBSTR (TRIM (BOTH '''' FROM codes),
'[^,]+',
1,
LEVEL)
FROM demo_temp
CONNECT BY LEVEL <= REGEXP_COUNT (codes, ',') + 1);
它会起作用吗?我猜是这样,如果demo.codes
包含诸如201
and之类的值601
。
例如:demo_temp.codes = '201,601'
。拆分为行、查询返回201
和601
(没有单引号):
SQL> WITH demo_temp AS (SELECT q'['201,601']' codes FROM DUAL)
2 SELECT codes,
3 REGEXP_SUBSTR (TRIM (BOTH '''' FROM codes),
4 '[^,]+',
5 1,
6 LEVEL)
7 FROM demo_temp
8 CONNECT BY LEVEL <= REGEXP_COUNT (codes, ',') + 1
9 /
CODES REGEXP_SU
--------- ---------
'201,601' 201
'201,601' 601
SQL>
推荐阅读
- java - 启动 spring-boot 应用程序时出错。如何找出导致 AbstractMethodError 的依赖项
- google-apps-script - 如何使用谷歌应用程序脚本找到 A 列中的最后一行并打印时间戳?
- c - 如何用C创建自动换机
- angular - 为什么 Karma 会跳过我的有效单元测试?
- urllib2 - urllib2.URL错误:
从网络代理 - c# - 视觉代码不适用于统一的新项目
- python - 如何使用 PyYaml 制作人类可读的 yaml 文件
- javascript - React 直接渲染数组而不循环
- python - 如何使用 gitlab 缓存来存储 ML 管道的模型权重?
- python - .append in loop 正在工作,但是为什么在列表元素之后重复最后一个 obj