mask:数据掩蔽
速查结论
mask(input[, upperChar, lowerChar, digitChar, otherChar]) 是 Spark SQL 中用于掩蔽字符串中的字符以保护敏感数据的函数。
语法
mask(input[, upperChar, lowerChar, digitChar, otherChar])
掩蔽给定的字符串值。该函数用 'X' 或 'x' 替换字符,用 'n' 替换数字。这对于创建删除敏感信息的表的副本非常有用。
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| input | STRING / VARCHAR / CHAR | 要掩蔽的字符串值 |
| upperChar | STRING | 可选。用于替换大写字符的字符。指定 NULL 以保留原始字符。默认值:'X' |
| lowerChar | STRING | 可选。用于替换小写字符的字符。指定 NULL 以保留原始字符。默认值:'x' |
| digitChar | STRING | 可选。用于替换数字字符的字符。指定 NULL 以保留原始字符。默认值:'n' |
| otherChar | STRING | 可选。用于替换所有其他字符的字符。指定 NULL 以保留原始字符。默认值:NULL |
示例
> SELECT mask('abcd-EFGH-8765-4321');
xxxx-XXXX-nnnn-nnnn
> SELECT mask('abcd-EFGH-8765-4321', 'Q');
xxxx-QQQQ-nnnn-nnnn
> SELECT mask('AbCD123-@$#', 'Q', 'q');
QqQQnnn-@$#
> SELECT mask('AbCD123-@$#');
XxXXnnn-@$#
> SELECT mask('AbCD123-@$#', 'Q');
QxQQnnn-@$#
> SELECT mask('AbCD123-@$#', 'Q', 'q');
QqQQnnn-@$#
> SELECT mask('AbCD123-@$#', 'Q', 'q', 'd');
QqQQddd-@$#
> SELECT mask('AbCD123-@$#', 'Q', 'q', 'd', 'o');
QqQQdddoooo
> SELECT mask('AbCD123-@$#', NULL, 'q', 'd', 'o');
AqCDdddoooo
> SELECT mask('AbCD123-@$#', NULL, NULL, 'd', 'o');
AbCDdddoooo
> SELECT mask('AbCD123-@$#', NULL, NULL, NULL, 'o');
AbCD123oooo
> SELECT mask(NULL, NULL, NULL, NULL, 'o');
NULL
> SELECT mask(NULL);
NULL
> SELECT mask('AbCD123-@$#', NULL, NULL, NULL, NULL);
AbCD123-@$#
常见报错与避坑指南
- 指定 NULL 保留原始字符:若想保留某类字符不被掩蔽,需显式传入 NULL(非字符串 'NULL')。
mask('ABC', NULL)将保留大写字符,而mask('ABC', 'NULL')会用字符串 'NULL' 替换大写字符。 - 默认 otherChar 为 NULL:其他字符(符号等)默认不被掩蔽,如需掩蔽所有非字母数字字符,需要显式指定 otherChar 参数。
Since: 3.4.0
📱关注公众号
「数据仓库技术」文章同步更新,不错过每一篇干货

💬加群交流
备注「数据仓库技术」加入社群,每日一道大厂SQL真题
