sql - 将 2 个表值函数合并为一个具有不同列的表
问题描述
首先,我有一个stringSplit()
表值函数。
假设我有这些作为参数:
var_1 = 'Apple.jpg,Carrot.png,Fruits.pdf'
var_2 = '9V0I1fab\CvaA5h,IV0asdkas//bVasA,Uasdl00/9asA' //Example base64 formats
使用stringSplit(var_1, ',')
and后我该怎么做stringSplit(var_2, ',')
?它应该合并为一个具有不同列的表,比如说:
| name | b64 |
---------------------------------
| Apple.jpg | 9V0I1fab\CvaA5h |
| Carrot.png | IV0asdkas//bVasA |
| Fruits.pdf | Uasdl00/9asA |
解决方案
不幸的是,string_split()
不保证返回值的顺序。它也没有返回索引号的选项。
如果每个字符串中的元素都是唯一的,您可以这样做:
select s1.value as name, s2.value as b64
from (select s.value,
row_number() over (order by charindex(',' + s.value + ',', ',' + @var_1 + ',')) as seqnum
from string_split(@var_1, ',') s
) s1 join
(select s.value,
row_number() over (order by charindex(',' + s.value + ',', ',' + @var_2 + ',')) as seqnum
from string_split(@var_2, ',') s
) s2
on s1.seqnum = s2.seqnum;
这是一个 db<>fiddle。
推荐阅读
- java - 当我扫描 Qr 时,结果未显示在 android studio 中的编辑文本上?
- json - 使用自定义 jsonConverter 在 c# 中处理来自使用的开放 api 的无效日期字符串格式
- expression - Azure 逻辑应用或 Power Automate 中的指数计算
- javascript - 每秒随机体背景颜色
- mysql - MySql > 8.0.18:包含 Group By WITH ROLLUP 的 VIEWS 的转储/恢复问题
- linux - 在linux中,将多个目录下的同名文件复制到一个新的目录下,以路径差异为名称
- sql - 根据联结表中的多次出现从数据库中选择
- python - Python Regex 获取匹配特定条件的第一个字母和最后一个单词
- python-3.x - 我想在数据框 python 中按行执行 mapreduce
- r - R 数据表创建前五年的平均值