我有一个包含 2 个文本列的表格,我需要对其进行插值。
第1行
Col1 = 树.#.芽.花.#.萼片
第 2 列 = ['1','0']
第2行
Col1 = 树.#.芽.花.#.萼片.#.颜色
第 2 列 = ['1','0','0']
想要的结果=
Row1 = Trees.1.Bud.Flower.0.Sepal
Row2 = Trees.1.Bud.Flower.0.Sepal.0.Colour
迄今为止我得到的最接近的是这个......
SELECT
FORMAT(Node, '1','2','','','','','')
FROM (
SELECT
'Trees.%s.Bud.Flower.%s.Sepal' as Node
)
但对如何利用我的“Col2”提供 FORMAT 函数所需的多个单独参数感到困惑。
非常希望有一个解决方案,而无需逐行处理数据集,或进入 UDF,我知道这在 sqlite 中并不简单😞
任何帮助表示赞赏🤞
如果您有最大的已知替换要做,您可以在
FORMAT
中传递未使用的值:
SELECT
T.column1,
T.column2,
FORMAT(
REPLACE(T.column1, '#', '%s'),
json_extract(T.column2, '$[0]'),
json_extract(T.column2, '$[1]'),
json_extract(T.column2, '$[2]'),
json_extract(T.column2, '$[3]'), -- unused
json_extract(T.column2, '$[4]'), -- unused
json_extract(T.column2, '$[5]'), -- unused
json_extract(T.column2, '$[6]'), -- unused
json_extract(T.column2, '$[7]') -- unused
) As Formated
FROM (
VALUES
('Trees.#.Bud.Flower.#.Sepal', '[''1'',''0'']'),
('Trees.#.Bud.Flower.#.Sepal.#.Colour', '[''1'',''0'',''0'']')
) T;