Sqlite3字符串格式(插值)

问题描述 投票:0回答:1

我有一个包含 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 中并不简单😞

任何帮助表示赞赏🤞

sqlite
1个回答
0
投票

如果您有最大的已知替换要做,您可以在

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;
© www.soinside.com 2019 - 2024. All rights reserved.