从 Snowflake 的列中删除或替换 ascii 空字符 <0x00>

Posted

技术标签:

【中文标题】从 Snowflake 的列中删除或替换 ascii 空字符 <0x00>【英文标题】:Removing or replacing ascii null character <0x00> from column in Snowflake 【发布时间】:2020-04-28 02:29:05 【问题描述】:

有没有办法可以删除/替换雪花中的 ascii 空字符 ?

SELECT 
   productname 
FROM 
   tableA

产量:

Bud Light<0x00>

当我以崇高的态度回顾它时。

我只希望得到Bud Light

【问题讨论】:

【参考方案1】:

如果是ASCII null,可以这样替换:

select replace(PRODUCTNAME, chr(0), '') as PRODUCTNAME from tableA;

【讨论】:

【参考方案2】:

除了 Greg 所说的之外,您还可以使用 trim 函数,该函数将只删除开头和结尾的空字符。

可以在 Snowflake 工作集中运行的示例

select 
   hex_decode_string('61626300') "4 char null terminated string", 
   len(hex_decode_string('61626300')) "Length before trim", 
   len(trim(hex_decode_string('61626300'), char('0'))) "Length after trim";

您的示例已修复

SELECT 
   trim(productname, char('0')) 
FROM 
   tableA

【讨论】:

以上是关于从 Snowflake 的列中删除或替换 ascii 空字符 <0x00>的主要内容,如果未能解决你的问题,请参考以下文章

从excel vba的列中的所有单元格中删除不需要的字符

从数据框中的列中采样唯一行而不进行替换

选择最近的时间戳行并从具有 Variant DataType 的列中获取值

从 PowerBI 表的列中删除“%”符号

如何从结构类型数组的列中删除特定元素

从 XLS 导出的列中删除 <span>