db2 - 我需要获取列,如果一个字符串存在于同一个表的另一列中,使用 db2
问题描述
我有一个表 t1,我需要检查 c2 中是否存在字符串 c1(需要 db2 查询)
|C1 |C2 |
|------|--------|
|2 |235 |
|street|1 street|
|tomm |angel |
|25 |25 35 |
预期成绩 :
c1 c2
街道:1 条街道
25 : 25 35
解决方案
按原样尝试以下操作。
这个想法是对两列中的每个字符串进行标记,假设单词由一个或多个空格分隔。我们加入exists
谓词中的两个单词列表来检查两个单词中是否有共同的单词。
with t(c1, c2) as
(
values
('2', '235')
, ('street', '1 street')
, ('tomm', 'angel')
, ('25', '25 35')
, ('winter season', 'summer season')
)
select c1, c2
from t
where exists
(
select 1
from xmltable
(
'for $id in tokenize($s, "\s+") return <i>{string($id)}</i>' passing t.c1 as "s"
columns tok varchar(100) path '.'
) t1
join xmltable
(
'for $id in tokenize($s, "\s+") return <i>{string($id)}</i>' passing t.c2 as "s"
columns tok varchar(100) path '.'
) t2 on t1.tok = t2.tok
);
结果是:
|C1 |C2 |
|---------------|---------------|
|street |1 street |
|25 |25 35 |
|winter season |summer season |
推荐阅读
- sql - Sql查询以获取列中的最大字数
- windows - 如何在windows上为GRPC设置环境变量
- c++ - istream 打开 .txt 文件,但实际上并未收集文件中的文本
- linux - "RUN ./configure" => 在 "RUN cd srcdir && chmod +x ./configure" 成功后在 Docker 中找不到
- php - 为什么我的 IF ($a || $b && $c) 语句不能按预期工作(PHP 运算符优先级)
- sql-server - 对还原时的“操作数类型冲突:datetime2 与 int 不兼容”进行故障排除
- android - 检查 SD 卡是否可用
- python - 代码给出了正确的结果(显然),但也给出了 SettingWithCopyWarning: A value is trying to be set on a copy of a slice from DataFrame
- c - C语言中的简单字数
- qt - QLocalSocket:套接字访问错误(错误3)