我正在清理一个类似数组的字符串,以便它是具有正确引用的正确数组类型。
输入示例:
['Home & Kitchen / Kitchen & Dining / Dining & Entertaining / Glassware & Drinkware' 'Home & Kitchen / Kitchen & Dining / Dining & Entertaining / Novelty / Drinkware / Coffee Mugs']
当前代码:
array_remove(array_remove(split(replace(replace(categories, '['), ']'), '\''), ''::variant), '\n '::variant)
输出:
[
"Home & Kitchen / Kitchen & Dining / Dining & Entertaining / Glassware & Drinkware",
"Home & Kitchen / Kitchen & Dining / Dining & Entertaining / Novelty / Drinkware / Coffee Mugs"
]
尽管字符串转义,但当我应用于 dbt 中的模型时,该解决方案并不适用。我收到下一列“意外”的语法错误。
我发现这个问题与外部替换处理单引号直接相关,即
'\"'
已经旨在安全地处理替换单引号,但显然不在 dbt 中。
欢迎任何想法/建议!
以下方法应适用于您提供的数据:
select
['Home & Kitchen / Kitchen & Dining / Dining & Entertaining / Glassware & Drinkware','Home & Kitchen / Kitchen & Dining / Dining & Entertaining / Novelty / Drinkware / Coffee Mugs']::variant
as my_variant,
array_distinct(strtok_to_array(array_to_string(my_variant, '/'), '/'));
返回:
[ "Home & Kitchen ", " Kitchen & Dining ", " Dining & Entertaining ", " Glassware & Drinkware", " Novelty ", " Drinkware ", " Coffee Mugs" ]