MySQL 企业数据屏蔽和去标识组件包括多个函数,这些函数可以分为以下类别:
每个组件函数在本节中对其字符串参数执行屏蔽操作,并返回屏蔽结果。
-
mask_canada_sin(
str
[,mask_char
])屏蔽加拿大社会保险号(SIN),并返回带有所有有意义数字的屏蔽结果的号码。可以指定可选的屏蔽字符。
参数:
-
str
: 要屏蔽的字符串。接受的格式是:-
九个非分隔数字。
-
九个数字,分组模式:
xxx-xxx-xxx
('-
' 是任何分隔符字符)。
该参数将被转换为
utf8mb4
字符集。 -
-
mask_char
: (可选) 用于屏蔽的单个字符。默认为'X'
如果mask_char
未指定。
返回值:
屏蔽的加拿大 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
: (可选)用于屏蔽的单个字符。默认为'X'
如果mask_char
未指定。
返回值:
掩码字符串编码在与
str
相同的字符集中,或者如果任一边距为负数,则返回错误。如果边距值的总和大于参数长度,则不进行掩码处理,并返回参数不变。
Note该函数针对单字节字符串(字节长度和字符长度相等)进行了优化。例如,
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
:(可选)用于掩码的单个字符。默认为'X'
如果mask_char
未指定。
返回值:
掩码字符串编码在与
str
相同的字符集中,或者如果任一边距为负数,则返回错误。如果边距值的总和大于参数长度,则整个参数将被掩码。
Note该函数针对单字节字符串(字节长度和字符长度相等)进行了优化。例如,
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
: 要mask的字符串。该字符串必须包含至少14个和最多19个字母数字字符。此参数将被转换为utf8mb4
字符集。 -
mask_char
: (可选) 用于mask的单个字符。默认为'X'
如果mask_char
未提供。
返回值:
以
utf8mb4
字符集编码的masked付款号字符串,或者如果参数长度不正确则返回错误,如果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.
-
-
mask付款卡Primary Account Number并返回号码,其中除了前六位和最后四位外的所有数字都被替换为
'X'
字符。前六位数字表明付款卡发行者。可以指定可选的mask字符。参数:
-
str
: 要mask的字符串。该字符串必须是Primary Account Number的合适长度,但不进行其他检查。此参数将被转换为utf8mb4
字符集。 -
mask_char
: (可选) 用于mask的单个字符。默认为'X'
如果mask_char
未提供。
返回值:
以
utf8mb4
字符集编码的masked付款号字符串,或者如果参数长度不正确则返回错误,如果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.
-
-
mask美国社会安全号码(SSN)并返回号码,其中除了最后四位外的所有数字都被替换为
'*'
字符。可以指定可选的mask字符。参数:
-
str
: 要mask的字符串。接受的格式为:-
九个非分隔数字。
-
九个数字,分组模式为:
xxx-xx-xxxx
('-
' 是任何分隔符字符)。
该参数将被转换为
utf8mb4
字符集。 -
-
mask_char
: (可选) 用于mask的单个字符。默认为'*'
如果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
未指定。
返回值:
以字符串形式返回的屏蔽 UK NIN,编码为
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
未指定。
返回值:
以字符串形式的masked 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
。Note为了获得更高质量的随机值,请使用
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
Warning从
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
,则默认为五个字符。 -
surname_size
:(可选)一个整数,指定姓氏部分的字符数。如果未指定surname_size
,则默认为七个字符。 -
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') | +----------------------------------------------------------------------+ | lsoy.qwupp@mynet.com | +----------------------------------------------------------------------+ mysql> SELECT gen_rnd_email(); +---------------------------+ | gen_rnd_email() | +---------------------------+ | ijocv.mwvhhuf@example.com | +---------------------------+
-
-
生成一个随机的国际银行账号 (IBAN),以
格式。生成的字符串以两个字符的国家代码开头,接着是根据 IBAN 规范计算的两个校验数字和随机的字母数字字符,直到达到所需的大小。AAAA
BBBB
CCCC
DDDD
Warning从
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 检查(一种算法,用于对校验数字进行验证)。
Warning从
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 以两个字符的前缀开始,随机选择自有效的前缀集,六个随机数字和一个字符后缀,随机选择自有效的后缀集。
Warning从
gen_rnd_uk_nin()
返回的值仅供测试用途,不适合出版。无法保证给定的返回值不被分配给合法的 NIN。如果需要出版gen_rnd_uk_nin()
结果,请考虑使用mask_uk_nin()
进行掩码。参数:
无。
返回值:
一个随机的 UK NIN 作为字符串,编码在
utf8mb4
字符集中。示例:
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),以带有破折号的分段格式。
参数:
无。
返回值:
一个随机的 UUID 作为字符串,编码在
utf8mb4
字符集中。示例:
mysql> SELECT gen_rnd_uuid(); +--------------------------------------+ | gen_rnd_uuid() | +--------------------------------------+ | 123e4567-e89b-12d3-a456-426614174000 | +--------------------------------------+
本节中的组件函数操作词典项并执行基于它们的管理屏蔽操作。所有这些函数都需要MASKING_DICTIONARIES_ADMIN
权限。
当创建词典项时,它将成为词典注册表的一部分,并被分配一个名称,以便其他词典函数使用。
-
将屏蔽词典表中的数据刷新到内存缓存中。需要
MASKING_DICTIONARIES_ADMIN
权限。从 MySQL 8.3.0 版本开始添加。
-
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
权限。Important词典及其项将被持久化到
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
不在from_dictionary_name
中出现,则返回term
,或者如果两个字典名称都不在字典注册表中,则返回错误。Note如果要替换的术语同时出现在两个字典中,返回值可能是相同的术语。
示例:
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.
-