Snowflake中如何去除字符串非换行空格?trim函数无效
在Snowflake中去除字符串中的非换行空格(NBSP)
Snowflake默认的trim()函数仅处理普通空格(U+0020),无法识别非换行空格(NBSP,Unicode编码U+00A0),所以直接调用trim(name)不会生效。以下是实现需求的方法,其中最优方案是利用trim()的自定义字符参数:
最优方法:指定trim的去除字符集
直接在trim()的第二个参数中同时包含普通空格和非换行空格,一次性完成两端的去除操作,效率最高:
select ' test ' as name -- 包含非换行空格的字符串 , trim(name, ' ' || CHAR(160)) as trimmed_name;
也可以使用Unicode转义字符直接表示NBSP,写法更直观:
select ' test ' as name , trim(name, ' \u00A0') as trimmed_name;
备选方法:替换后再trim
如果需要兼容更复杂的空白字符处理场景,可以先将非换行空格替换为普通空格,再调用默认trim():
select ' test ' as name , trim(replace(name, CHAR(160), ' ')) as trimmed_name;
这种方法适合统一处理多种空白字符的场景,但相比第一种多了一次替换操作,效率略低。
内容的提问来源于stack exchange,提问作者Saqib Ali




