跳到主要内容

mask:数据掩蔽

速查结论

mask(input[, upperChar, lowerChar, digitChar, otherChar]) 是 Spark SQL 中用于掩蔽字符串中的字符以保护敏感数据的函数。

语法

mask(input[, upperChar, lowerChar, digitChar, otherChar])

掩蔽给定的字符串值。该函数用 'X' 或 'x' 替换字符,用 'n' 替换数字。这对于创建删除敏感信息的表的副本非常有用。

参数说明

参数类型说明
inputSTRING / VARCHAR / CHAR要掩蔽的字符串值
upperCharSTRING可选。用于替换大写字符的字符。指定 NULL 以保留原始字符。默认值:'X'
lowerCharSTRING可选。用于替换小写字符的字符。指定 NULL 以保留原始字符。默认值:'x'
digitCharSTRING可选。用于替换数字字符的字符。指定 NULL 以保留原始字符。默认值:'n'
otherCharSTRING可选。用于替换所有其他字符的字符。指定 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真题

交流微信二维码

你可能还想看