TRY_URL_DECODE
功能概述
对
application/x-www-form-urlencoded 格式的字符串做 URL 解码,解码失败时返回 NULL 而不是报错。用法与 URL_DECODE 相同,适合处理来源不可控的日志、埋点数据:其中个别行编码不合法时,URL_DECODE 会让整个查询失败,TRY_URL_DECODE 只让这一行返回 NULL。
语法
参数说明
:STRING 类型,URL 编码的字符串。<str>
解码为对应字节,%XX
解码为空格。以下情况返回 NULL:+
后不足两位或不是合法的十六进制,如%
、'%''%2spark'- 包含未编码的
等不合法序列%s
为 NULL<str>
使用示例
| ok | bad1 | bad2 |
|---|---|---|
| http://spark.apache.org/path?query=&key= 2 | NULL | NULL |
+ 被解码为空格;bad2 中的 %2s 不是合法的十六进制编码。
清洗埋点 URL,把无法解码的行单独标出:
| raw | decoded | is_bad |
|---|---|---|
| page%3Dhome%26from%3Dsearch | page=home&from=search | false |
| kw%3D%E5%92%96%E5%95%A1 | kw=咖啡 | false |
| broken%E5% | NULL | true |
注意事项
- 只在需要容错时使用。数据质量有保证时用
,可以及早发现异常数据。URL_DECODE
相关文档
联系我们
