基于指定条件为Snowflake行添加换行符的技术需求
Snowflake 单列数据前置换行符实现方案
假设你的表名为 single_col_table,单列字段名为 raw_data,可以通过以下SQL语句实现需求:
SELECT CASE WHEN (LENGTH(raw_data) - LENGTH(REPLACE(raw_data, '|', ''))) >= 38 THEN CONCAT('\n', raw_data) ELSE raw_data END AS processed_data FROM single_col_table;
逻辑说明
- 统计竖线数量:
LENGTH(raw_data) - LENGTH(REPLACE(raw_data, '|', ''))用于计算记录中|的总个数——每移除一个|,字符串长度减1,两者的差值就是|的数量。 - 条件处理:当
|的数量≥38时,用CONCAT('\n', raw_data)在原记录前拼接换行符;否则直接返回原记录。拼接后的结果输出时,换行符会自动生成空行,原记录紧随其后。
测试验证
针对你提供的第二个示例记录:
13||sample_col||help||test||col4||col5||col6||col7||col8||col9||col_10||something||||||||nothing||omg||||mii|| error: yes it is very tricky||Your time is pending please
统计其中|的数量为40,满足≥38的条件,执行SQL后会返回\n+原记录,输出时呈现第一行空、第二行为原记录的效果。
内容的提问来源于stack exchange,提问作者Priya Chauhan
相关产品推荐
相关产品推荐

