MySQL 企业版数据脱敏和去标识化组件包含多个函数,可以分为以下几类
本节中的每个组件函数都对其字符串参数执行掩码操作,并返回掩码后的结果。
mask_canada_sin(
str
[,mask_char
])屏蔽加拿大社会保险号码 (SIN) 并返回该号码,所有有效数字均替换为
'X'
字符。可以指定可选的掩码字符。参数
str
: 要屏蔽的字符串。可接受的格式为九位不分隔的数字。
以模式分组的九位数字:
xxx-xxx-xxx
('-
' 是任何分隔符)。
此参数转换为
utf8mb4
字符集。mask_char
: (可选)用于屏蔽的单个字符。如果未提供mask_char
,则默认值为'X'
。
返回值
掩码后的加拿大 SIN,以
utf8mb4
字符集编码的字符串,如果参数长度不正确,则返回错误;如果str
格式不正确或包含多字节字符,则返回NULL
。示例
mysql> SELECT mask_canada_sin('046-454-286'), mask_canada_sin('abcdefijk'); +--------------------------------+------------------------------+ | mask_canada_sin('046-454-286') | mask_canada_sin('abcdefijk') | +--------------------------------+------------------------------+ | XXX-XXX-XXX | XXXXXXXXX | +--------------------------------+------------------------------+ mysql> SELECT mask_canada_sin('909'); ERROR 1123 (HY000): Can't initialize function 'mask_canada_sin'; Argument 0 is too short. mysql> SELECT mask_canada_sin('046-454-286-909'); ERROR 1123 (HY000): Can't initialize function 'mask_canada_sin'; Argument 0 is too long.
屏蔽国际银行帐号 (IBAN) 并返回该号码,其中除前两个字母(表示国家/地区)之外的所有字母均替换为
'*'
字符。可以指定可选的掩码字符。参数
str
: 要屏蔽的字符串。每个国家/地区都可以有不同的国家/地区路由或帐号编号系统,最少 13 个字符,最多 34 个字母数字 ASCII 字符。可接受的格式为不分隔的字符。
按四个字符分组的字符,最后一组除外,并以空格或任何其他分隔符分隔(例如:
xxxx-xxxx-xxxx-xx
)。
此参数转换为
utf8mb4
字符集。mask_char
: (可选)用于屏蔽的单个字符。如果未提供mask_char
,则默认值为'*'
。
返回值
掩码后的国际银行帐号,以
utf8mb4
字符集编码的字符串,如果参数长度不正确,则返回错误;如果str
格式不正确或包含多字节字符,则返回NULL
。示例
mysql> SELECT mask_iban('IE12 BOFI 9000 0112 3456 78'), mask_iban('abcdefghijk'); +------------------------------------------+--------------------------+ | mask_iban('IE12 BOFI 9000 0112 3456 78') | mask_iban('abcdefghijk') | +------------------------------------------+--------------------------+ | IE** **** **** **** **** ** | ab********* | +------------------------------------------+--------------------------+ mysql> SELECT mask_iban('909'); ERROR 1123 (HY000): Can't initialize function 'mask_iban'; Argument 0 is too short. mysql> SELECT mask_iban('IE12 BOFI 9000 0112 3456 78 IE12 BOFI 9000 0112 3456 78'); ERROR 1123 (HY000): Can't initialize function 'mask_iban'; Argument 0 is too long.
mask_inner(
str
,margin1
,margin2
[,mask_char
])屏蔽字符串的内部部分,保留两端不变,并返回结果。可以指定可选的掩码字符。
mask_inner
支持所有字符集。参数
str
: 要屏蔽的字符串。此参数转换为utf8mb4
字符集。margin1
: 一个非负整数,指定字符串左端保留未屏蔽的字符数。如果值为 0,则字符串左端没有字符保留未屏蔽。margin2
:一个非负整数,指定字符串右端保持未屏蔽的字符数。如果值为 0,则右端字符不保留未屏蔽。mask_char
: (可选)用于屏蔽的单个字符。如果未提供mask_char
,则默认值为'X'
。
返回值
使用与
str
相同的字符集编码的屏蔽字符串,如果任一边距为负数,则返回错误。如果边距值的总和大于参数长度,则不进行屏蔽,并返回未更改的参数。
注意该函数针对单字节字符串(字节长度和字符长度相等)进行了优化,以提高工作速度。例如,
utf8mb4
字符集仅对 ASCII 字符使用一个字节,因此该函数将仅包含 ASCII 字符的字符串作为单字节字符串进行处理。示例
mysql> SELECT mask_inner('abcdef', 1, 2), mask_inner('abcdef',0, 5); +----------------------------+---------------------------+ | mask_inner('abcdef', 1, 2) | mask_inner('abcdef',0, 5) | +----------------------------+---------------------------+ | aXXXef | Xbcdef | +----------------------------+---------------------------+ mysql> SELECT mask_inner('abcdef', 1, 2, '*'), mask_inner('abcdef',0, 5, '#'); +---------------------------------+--------------------------------+ | mask_inner('abcdef', 1, 2, '*') | mask_inner('abcdef',0, 5, '#') | +---------------------------------+--------------------------------+ | a***ef | #bcdef | +---------------------------------+--------------------------------+
mask_outer(
str
,margin1
,margin2
[,mask_char
])屏蔽字符串的左端和右端,保持内部未屏蔽,并返回结果。可以指定可选的屏蔽字符。
mask_outer
支持所有字符集。参数
str
: 要屏蔽的字符串。此参数转换为utf8mb4
字符集。margin1
:一个非负整数,指定字符串左端要屏蔽的字符数。如果值为 0,则不屏蔽左端字符。margin2
:一个非负整数,指定字符串右端要屏蔽的字符数。如果值为 0,则不屏蔽右端字符。mask_char
: (可选)用于屏蔽的单个字符。如果未提供mask_char
,则默认值为'X'
。
返回值
使用与
str
相同的字符集编码的屏蔽字符串,如果任一边距为负数,则返回错误。如果边距值的总和大于参数长度,则整个参数都将被屏蔽。
注意该函数针对单字节字符串(字节长度和字符长度相等)进行了优化,以提高工作速度。例如,
utf8mb4
字符集仅对 ASCII 字符使用一个字节,因此该函数将仅包含 ASCII 字符的字符串作为单字节字符串进行处理。示例
mysql> SELECT mask_outer('abcdef', 1, 2), mask_outer('abcdef',0, 5); +----------------------------+---------------------------+ | mask_outer('abcdef', 1, 2) | mask_outer('abcdef',0, 5) | +----------------------------+---------------------------+ | XbcdXX | aXXXXX | +----------------------------+---------------------------+ mysql> SELECT mask_outer('abcdef', 1, 2, '*'), mask_outer('abcdef',0, 5, '#'); +---------------------------------+--------------------------------+ | mask_outer('abcdef', 1, 2, '*') | mask_outer('abcdef',0, 5, '#') | +---------------------------------+--------------------------------+ | *bcd** | a##### | +---------------------------------+--------------------------------+
屏蔽支付卡的主要帐号 (PAN),并返回该号码,其中除最后四位数字外,所有数字均替换为
'X'
字符。可以指定可选的屏蔽字符。参数
str
:要屏蔽的字符串。该字符串必须至少包含 14 个字符,最多包含 19 个字母数字字符。此参数将转换为utf8mb4
字符集。mask_char
: (可选)用于屏蔽的单个字符。如果未提供mask_char
,则默认值为'X'
。
返回值
已屏蔽的付款号码,以
utf8mb4
字符集编码的字符串表示;如果参数长度不正确,则返回错误;如果str
格式不正确或包含多字节字符,则返回NULL
。示例
mysql> SELECT mask_pan(gen_rnd_pan()); +-------------------------+ | mask_pan(gen_rnd_pan()) | +-------------------------+ | XXXXXXXXXXXX9102 | +-------------------------+ mysql> SELECT mask_pan(gen_rnd_pan(19)); +---------------------------+ | mask_pan(gen_rnd_pan(19)) | +---------------------------+ | XXXXXXXXXXXXXXX8268 | +---------------------------+ mysql> SELECT mask_pan('a*Z'); ERROR 1123 (HY000): Can't initialize function 'mask_pan'; Argument 0 is too short.
屏蔽支付卡的主要帐号,并返回该号码,其中除前六位和最后四位数字外,所有数字均替换为
'X'
字符。前六位数字表示支付卡发行商。可以指定可选的屏蔽字符。参数
str
:要屏蔽的字符串。该字符串必须是主要帐号的合适长度,但不会进行其他检查。此参数将转换为utf8mb4
字符集。mask_char
: (可选)用于屏蔽的单个字符。如果未提供mask_char
,则默认值为'X'
。
返回值
已屏蔽的付款号码,以
utf8mb4
字符集编码的字符串表示;如果参数长度不正确,则返回错误;如果str
格式不正确或包含多字节字符,则返回NULL
。示例
mysql> SELECT mask_pan_relaxed(gen_rnd_pan()); +---------------------------------+ | mask_pan_relaxed(gen_rnd_pan()) | +---------------------------------+ | 551279XXXXXX3108 | +---------------------------------+ mysql> SELECT mask_pan_relaxed(gen_rnd_pan(19)); +-----------------------------------+ | mask_pan_relaxed(gen_rnd_pan(19)) | +-----------------------------------+ | 462634XXXXXXXXX6739 | +-----------------------------------+ mysql> SELECT mask_pan_relaxed('a*Z'); ERROR 1123 (HY000): Can't initialize function 'mask_pan_relaxed'; Argument 0 is too short.
屏蔽美国社会保障号码 (SSN),并返回该号码,其中除最后四位数字外,所有数字均替换为
'*'
字符。可以指定可选的屏蔽字符。参数
str
: 要屏蔽的字符串。可接受的格式为九位不分隔的数字。
九位数字,按以下模式分组:
xxx-xx-xxxx
('-
' 是任何分隔符)。
此参数转换为
utf8mb4
字符集。mask_char
: (可选)用于屏蔽的单个字符。如果未提供mask_char
,则默认值为'*'
。
返回值
已屏蔽的社会保障号码,以
utf8mb4
字符集编码的字符串表示;如果参数长度不正确,则返回错误;如果str
格式不正确或包含多字节字符,则返回NULL
。示例
mysql> SELECT mask_ssn('909-63-6922'), mask_ssn('cdefghijk'); +-------------------------+-------------------------+ | mask_ssn('909-63-6922') | mask_ssn('cdefghijk') | +-------------------------+-------------------------+ | ***-**-6922 | *******hijk | +-------------------------+-------------------------+ mysql> SELECT mask_ssn('909'); ERROR 1123 (HY000): Can't initialize function 'mask_ssn'; Argument 0 is too short. mysql> SELECT mask_ssn('123456789123456789'); ERROR 1123 (HY000): Can't initialize function 'mask_ssn'; Argument 0 is too long.
mask_uk_nin(
str
[,mask_char
])屏蔽英国国民保险号码 (UK NIN),并返回该号码,其中除前两位数字外,所有数字均替换为
'*'
字符。可以指定可选的屏蔽字符。参数
str
: 要屏蔽的字符串。可接受的格式为九位不分隔的数字。
九位数字,按以下模式分组:
xxx-xx-xxxx
('-
' 是任何分隔符)。九位数字,按以下模式分组:
xx-xxxxxx-x
('-
' 是任何分隔符)。
此参数转换为
utf8mb4
字符集。mask_char
: (可选)用于屏蔽的单个字符。如果未提供mask_char
,则默认值为'*'
。
返回值
已屏蔽的英国国民保险号码,以
utf8mb4
字符集编码的字符串表示;如果参数长度不正确,则返回错误;如果str
格式不正确或包含多字节字符,则返回NULL
。示例
mysql> SELECT mask_uk_nin('QQ 12 34 56 C'), mask_uk_nin('abcdefghi'); +------------------------------+--------------------------+ | mask_uk_nin('QQ 12 34 56 C') | mask_uk_nin('abcdefghi') | +------------------------------+--------------------------+ | QQ ** ** ** * | ab******* | +------------------------------+--------------------------+ mysql> SELECT mask_uk_nin('909'); ERROR 1123 (HY000): Can't initialize function 'mask_uk_nin'; Argument 0 is too short. mysql> SELECT mask_uk_nin('abcdefghijk'); ERROR 1123 (HY000): Can't initialize function 'mask_uk_nin'; Argument 0 is too long.
屏蔽通用唯一标识符 (UUID),并返回该号码,其中所有有意义的字符均替换为
'*'
字符。可以指定可选的屏蔽字符。参数
str
:要屏蔽的字符串。接受的格式为xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
,其中“x
”是任何数字,“-
”是任何分隔符。此参数将转换为utf8mb4
字符集。mask_char
: (可选)用于屏蔽的单个字符。如果未提供mask_char
,则默认值为'*'
。
返回值
已屏蔽的 UUID,以
utf8mb4
字符集编码的字符串表示;如果参数长度不正确,则返回错误;如果str
格式不正确或包含多字节字符,则返回NULL
。示例
mysql> SELECT mask_uuid(gen_rnd_uuid()); +--------------------------------------+ | mask_uuid(gen_rnd_uuid()) | +--------------------------------------+ | ********-****-****-****-************ | +--------------------------------------+ mysql> SELECT mask_uuid('909'); ERROR 1123 (HY000): Can't initialize function 'mask_uuid'; Argument 0 is too short. mysql> SELECT mask_uuid('123e4567-e89b-12d3-a456-426614174000-123e4567-e89b-12d3'); ERROR 1123 (HY000): Can't initialize function 'mask_uuid'; Argument 0 is too long.
本节中的组件函数为不同类型的数据生成随机值。在可能的情况下,生成的值具有为演示或测试值保留的特征,以避免将它们误认为合法数据。例如,gen_rnd_us_phone()
返回使用 555 区号的美国电话号码,该区号未分配给实际使用的电话号码。各个函数说明描述了此原则的任何例外情况。
生成从指定范围内选择的随机数。
参数
lower
:指定范围下限的整数。upper
:指定范围上限的整数,该上限不得小于下限。
返回值
lower
到upper
范围内(含)的随机整数(以utf8mb4
字符集编码),如果upper
参数小于lower
,则返回NULL
。注意为了获得质量更好的随机值,请使用
RAND()
而不是此函数。示例
mysql> SELECT gen_range(100, 200), gen_range(-1000, -800); +---------------------+------------------------+ | gen_range(100, 200) | gen_range(-1000, -800) | +---------------------+------------------------+ | 177 | -917 | +---------------------+------------------------+ mysql> SELECT gen_range(1, 0); +-----------------+ | gen_range(1, 0) | +-----------------+ | NULL | +-----------------+
以
格式生成随机的加拿大社会保险号码 (SIN)。生成的号码通过了 Luhn 校验算法,该算法可确保此号码的一致性。AAA
-BBB
-CCC
警告gen_rnd_canada_sin()
返回的值应仅用于测试目的,不适合发布。无法保证给定的返回值未分配给合法的加拿大 SIN。如果需要发布gen_rnd_canada_sin()
结果,请考虑使用mask_canada_sin()
对其进行屏蔽。参数
无。
返回值
随机的加拿大 SIN,以
utf8mb4
字符集编码的字符串表示。示例
mysql> SELECT gen_rnd_canada_sin(); +----------------------+ | gen_rnd_canada_sin() | +----------------------+ | 046-454-286 | +----------------------+
gen_rnd_email(
name_size
,surname_size
,domain
)生成格式为
random_name
.random_surname
@domain
的随机电子邮件地址。参数
name_size
:(可选)一个整数,指定地址名称部分中的字符数。如果未提供name_size
,则默认为 5。surname_size
:(可选)一个整数,指定地址姓氏部分中的字符数。如果未提供surname_size
,则默认为 7。domain
:(可选)一个字符串,指定地址的域名部分。如果未提供domain
,则默认为example.com
。
返回值
随机电子邮件地址,以
utf8mb4
字符集编码的字符串表示。示例
mysql> SELECT gen_rnd_email(name_size = 4, surname_size = 5, domain = 'mynet.com'); +----------------------------------------------------------------------+ | gen_rnd_email(name_size = 4, surname_size = 5, domain = 'mynet.com') | +----------------------------------------------------------------------+ | [email protected] | +----------------------------------------------------------------------+ mysql> SELECT gen_rnd_email(); +---------------------------+ | gen_rnd_email() | +---------------------------+ | [email protected] | +---------------------------+
以
格式生成随机的国际银行帐号 (IBAN)。生成的字符串以两位数的国家/地区代码开头,两个校验位根据 IBAN 规范计算得出,并包含随机的字母数字字符,直至达到所需的大小。AAAA
BBBB
CCCC
DDDD
警告gen_rnd_iban()
返回的值应仅用于测试目的,如果与有效的国家/地区代码一起使用,则不适合发布。无法保证给定的返回值未分配给合法的银行帐号。如果需要发布gen_rnd_iban()
结果,请考虑使用mask_iban()
对其进行屏蔽。参数
country
:(可选)两位数的国家/地区代码;默认值为ZZ
size
:(可选)有意义的字符数;默认值为 16,最小值为 15,最大值为 34
返回值
随机的 IBAN,以
utf8mb4
字符集编码的字符串表示。示例
mysql> SELECT gen_rnd_iban(); +-----------------------------+ | gen_rnd_iban() | +-----------------------------+ | ZZ79 3K2J WNH9 1V0DI | +-----------------------------+
生成随机的支付卡主要帐号。该号码通过了 Luhn 校验(一种针对校验位执行校验和验证的算法)。
警告gen_rnd_pan()
返回的值应仅用于测试目的,不适合发布。无法保证给定的返回值未分配给合法的支付帐户。如果需要发布gen_rnd_pan()
结果,请考虑使用mask_pan()
或mask_pan_relaxed()
对其进行屏蔽。参数
size
:(可选)一个整数,指定结果的大小。如果未提供size
,则默认为 16。如果提供,则size
必须是 12 到 19 范围内的整数。
返回值
随机付款号码,以字符串表示;如果提供的
size
参数超出允许范围,则返回错误。示例
mysql> SELECT mask_pan(gen_rnd_pan()); +-------------------------+ | mask_pan(gen_rnd_pan()) | +-------------------------+ | XXXXXXXXXXXX5805 | +-------------------------+ mysql> SELECT mask_pan(gen_rnd_pan(19)); +---------------------------+ | mask_pan(gen_rnd_pan(19)) | +---------------------------+ | XXXXXXXXXXXXXXX5067 | +---------------------------+ mysql> SELECT mask_pan_relaxed(gen_rnd_pan()); +---------------------------------+ | mask_pan_relaxed(gen_rnd_pan()) | +---------------------------------+ | 398403XXXXXX9547 | +---------------------------------+ mysql> SELECT mask_pan_relaxed(gen_rnd_pan(19)); +-----------------------------------+ | mask_pan_relaxed(gen_rnd_pan(19)) | +-----------------------------------+ | 578416XXXXXXXXX6509 | +-----------------------------------+ mysql> SELECT gen_rnd_pan(20); ERROR 1123 (HY000): Can't initialize function 'gen_rnd_pan'; Minimal value of argument 0 is 14.
以
格式生成随机的美国社会保障号码。AAA
-BB
-CCCC
AAA
部分大于 900,这是合法社会保障号码未使用过的特征。参数
无。
返回值
随机的社会保障号码,以
utf8mb4
字符集编码的字符串表示。示例
mysql> SELECT gen_rnd_ssn(); +---------------+ | gen_rnd_ssn() | +---------------+ | 951-26-0058 | +---------------+
生成一个九位数格式的随机英国国民保险号码 (UK NIN)。NIN 以从有效前缀集中随机选择的两个字符前缀开头,接着是六个随机数字,以及从有效后缀集中随机选择的一个字符后缀。
警告gen_rnd_uk_nin()
返回的值应仅用于测试目的,不适合发布。无法保证给定的返回值未分配给合法的 NIN。如果需要发布gen_rnd_uk_nin()
结果,请考虑使用mask_uk_nin()
对其进行屏蔽。参数
无。
返回值
一个以
utf8mb4
字符集编码的字符串形式的随机英国 NIN。示例
mysql> SELECT gen_rnd_uk_nin(); +----------------------+ | gen_rnd_uk_nin() | +----------------------+ | QQ123456C | +----------------------+
以
1-555-
格式生成一个随机的美国电话号码。555 区号不用于合法的电话号码。AAA
-BBBB
参数
无。
返回值
一个以
utf8mb4
字符集编码的字符串形式的随机美国电话号码。示例
mysql> SELECT gen_rnd_us_phone(); +--------------------+ | gen_rnd_us_phone() | +--------------------+ | 1-555-682-5423 | +--------------------+
生成一个用短划线分段的随机通用唯一标识符 (UUID)。
参数
无。
返回值
一个以
utf8mb4
字符集编码的字符串形式的随机 UUID。示例
mysql> SELECT gen_rnd_uuid(); +--------------------------------------+ | gen_rnd_uuid() | +--------------------------------------+ | 123e4567-e89b-12d3-a456-426614174000 | +--------------------------------------+
本节中的组件函数用于操作术语字典并根据它们执行管理屏蔽操作。所有这些函数都需要 MASKING_DICTIONARIES_ADMIN
权限。
创建术语字典后,它将成为字典注册表的一部分,并被分配一个名称供其他字典函数使用。
将屏蔽字典表中的数据刷新到内存缓存。需要
MASKING_DICTIONARIES_ADMIN
权限。masking_dictionary_remove(
dictionary_name
)从字典注册表中删除字典及其所有术语。此函数需要
MASKING_DICTIONARIES_ADMIN
权限。参数
dictionary_name
: 一个字符串,用于命名要从字典表中删除的字典。此参数将转换为utf8mb4
字符集。
返回值
一个字符串,指示删除操作是否成功。
1
表示成功。NULL
表示未找到字典名称。示例
mysql> SELECT masking_dictionary_remove('mydict'); +-------------------------------------+ | masking_dictionary_remove('mydict') | +-------------------------------------+ | 1 | +-------------------------------------+ mysql> SELECT masking_dictionary_remove('no-such-dict'); +-------------------------------------------+ | masking_dictionary_remove('no-such-dict') | +-------------------------------------------+ | NULL | +-------------------------------------------+
masking_dictionary_term_add(
dictionary_name
,term_name
)向命名的字典添加一个术语。此函数需要
MASKING_DICTIONARIES_ADMIN
权限。重要字典及其术语将持久保存到
mysql
模式中的一个表中。如果用户重复执行gen_dictionary()
,则任何用户帐户都可以访问字典中的所有术语。避免将敏感信息添加到字典中。每个术语都由一个命名的字典定义。
masking_dictionary_term_add()
允许您一次添加一个字典术语。参数
dictionary_name
: 一个字符串,提供字典的名称。此参数将转换为utf8mb4
字符集。term_name
: 一个字符串,指定字典表中的术语名称。此参数将转换为utf8mb4
字符集。
返回值
一个字符串,指示添加术语操作是否成功。
1
表示成功。NULL
表示失败。术语添加失败可能由以下几个原因导致,包括已添加具有给定名称的术语。
未找到字典名称。
示例
mysql> SELECT masking_dictionary_term_add('mydict','newterm'); +-------------------------------------------------+ | masking_dictionary_term_add('mydict','newterm') | +-------------------------------------------------+ | 1 | +-------------------------------------------------+ mysql> SELECT masking_dictionary_term_add('mydict',''); +------------------------------------------+ | masking_dictionary_term_add('mydict','') | +------------------------------------------+ | NULL | +------------------------------------------+
masking_dictionary_term_remove(
dictionary_name
,term_name
)从命名的字典中删除一个术语。此函数需要
MASKING_DICTIONARIES_ADMIN
权限。参数
dictionary_name
: 一个字符串,提供字典的名称。此参数将转换为utf8mb4
字符集。term_name
: 一个字符串,指定字典表中的术语名称。此参数将转换为utf8mb4
字符集。
返回值
一个字符串,指示删除术语操作是否成功。
1
表示成功。NULL
表示失败。术语删除失败可能由以下几个原因导致,包括未找到具有给定名称的术语。
未找到字典名称。
示例
mysql> SELECT masking_dictionary_term_add('mydict','newterm'); +-------------------------------------------------+ | masking_dictionary_term_add('mydict','newterm') | +-------------------------------------------------+ | 1 | +-------------------------------------------------+ mysql> SELECT masking_dictionary_term_remove('mydict',''); +---------------------------------------------+ | masking_dictionary_term_remove('mydict','') | +---------------------------------------------+ | NULL | +---------------------------------------------+
本节中的组件函数用于操作术语字典并根据它们执行生成操作。
创建术语字典后,它将成为字典注册表的一部分,并被分配一个名称供其他字典函数使用。
gen_blocklist(
str
,from_dictionary_name
,to_dictionary_name
)将一个字典中出现的术语替换为第二个字典中的术语,并返回替换术语。这将通过替换来屏蔽原始术语。
参数
term
: 一个字符串,指示要替换的术语。此参数将转换为utf8mb4
字符集。from_dictionary_name
: 一个字符串,用于命名包含要替换的术语的字典。此参数将转换为utf8mb4
字符集。to_dictionary_name
: 一个字符串,用于命名从中选择替换术语的字典。此参数将转换为utf8mb4
字符集。
返回值
一个以
utf8mb4
字符集编码的字符串,从to_dictionary_name
中随机选择,作为term
的替换,如果term
未出现在from_dictionary_name
中,则返回term
,如果任一字典名称不在字典注册表中,则返回错误。注意如果要替换的术语同时出现在两个字典中,则返回值可能是相同的术语。
示例
mysql> SELECT gen_blocklist('Berlin', 'DE_Cities', 'US_Cities'); +---------------------------------------------------+ | gen_blocklist('Berlin', 'DE_Cities', 'US_Cities') | +---------------------------------------------------+ | Phoenix | +---------------------------------------------------+
gen_dictionary(
dictionary_name
)从字典中返回一个随机术语。
参数
dictionary_name
: 一个字符串,用于命名从中选择术语的字典。此参数将转换为utf8mb4
字符集。
返回值
一个来自字典的随机术语,以
utf8mb4
字符集编码的字符串形式返回,如果字典名称不在字典注册表中,则返回NULL
。示例
mysql> SELECT gen_dictionary('mydict'); +--------------------------+ | gen_dictionary('mydict') | +--------------------------+ | My term | +--------------------------+ mysql> SELECT gen_dictionary('no-such-dict'); ERROR 1123 (HY000): Can't initialize function 'gen_dictionary'; Cannot access dictionary, check if dictionary name is valid.