Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用随机元音替换mysql列中的所有元音_Mysql_Sql_Random_Obfuscation - Fatal编程技术网

用随机元音替换mysql列中的所有元音

用随机元音替换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

我有一个带有表客户机的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 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;