用随机元音替换mysql列中的所有元音
我有一个带有表客户机的mysql数据库,希望通过将FirstName和LastName列的所有元音替换为随机元音来隐藏敏感数据(将数据库提供给开发人员) 因此,字符串中的所有“A”、“E”、“I”、“O”、“U”都应替换为组“A”、“E”、“I”、“O”、“U”中的随机字母 同样地,所有“a”、“e”、“i”、“o”、“u”应替换为“a”、“e”、“i”、“o”、“u”组中的随机字母用随机元音替换mysql列中的所有元音,mysql,sql,random,obfuscation,Mysql,Sql,Random,Obfuscation,我有一个带有表客户机的mysql数据库,希望通过将FirstName和LastName列的所有元音替换为随机元音来隐藏敏感数据(将数据库提供给开发人员) 因此,字符串中的所有“A”、“E”、“I”、“O”、“U”都应替换为组“A”、“E”、“I”、“O”、“U”中的随机字母 同样地,所有“a”、“e”、“i”、“o”、“u”应替换为“a”、“e”、“i”、“o”、“u”组中的随机字母 谢谢你的回答。像这样的东西会有用的 select translate('The quick brown fOx
谢谢你的回答。像这样的东西会有用的
select translate('The quick brown fOx jumps ovEr the lazy
dog','aeiouAEIOU','eiouaEIOUA');
translate
---------------------------------------------
Thi qaock bruwn fUx jamps uvIr thi lezy dug
翻译(列、到字符串、从字符串)
-对于从字符串,可以按任意顺序指定字母表。
请参阅文档
但是一个字符只能替换为一个字符,
i、 e'a'将被e'等替换。这并不漂亮,但我可以工作
SELECT name,
replace(
replace(
replace(
replace(
replace(
replace(
name,'a',mid('aeiuoy',rand()*5+1,1))
,'e',mid('aeiuoy',rand()*5+1,1))
,'i',mid('aeiuoy',rand()*5+1,1))
,'u',mid('aeiuoy',rand()*5+1,1))
,'o',mid('aeiuoy',rand()*5+1,1))
,'y',mid('aeiuoy',rand()*5+1,1))
as codedname
FROM names;
如果要更随机地替换,应创建如下函数:
CREATE FUNCTION `fReplaceVowels`(s varchar(255)) RETURNS varchar(255) CHARSET latin1
BEGIN
declare v_max int unsigned;
declare v_counter int unsigned default 1;
declare result varchar(255);
set result = s;
set v_max = LENGTH(s);
while v_counter < v_max do
if (select binary 'aeiuoy' like concat('%', mid(s,v_counter,1),'%') ) then
set result=concat(left(result,v_counter-1),mid('aeiuoy',rand()*5+1,1),mid(result,v_counter+1));
end if;
if (select binary 'AEIUOY' like concat('%', mid(s,v_counter,1),'%') ) then
set result=concat(left(result,v_counter-1),mid('AEIUOY',rand()*5+1,1),mid(result,v_counter+1));
end if;
set v_counter=v_counter+1;
end while;
RETURN result;
END
尝试类似于postgresql translate()的内容:请参阅,谢谢!它工作得很好!只是一个小问题。字符串的所有元音都替换为相同的随机元音。您是否可以编辑此请求,使一个字符串中的元音替换为不同的随机元音?谢谢,一个乳液增加了一个功能。
SELECT name, fReplaceVowels(name) as codedname FROM names;