替换msql中加密字段中的子字符串

时间:2017-06-16 14:27:20

标签: mysql encryption

我在mysql中有一个加密列。我需要替换它中的子字符串。

如果没有加密,那么我会使用

 UPDATE my_table 
 SET    my_field = REPLACE(my_field, 'olddata', 'newdata')

如果是整列更新,我会使用

  UPDATE my_table 
  SET    my_field = AES_ENCRYPT('newdata' , 'KEY') 
  where  AES_DECRYPT(my_field , 'KEY') = 'olddata'

但是如何将上述两个代码一起使用?用AES_ENCRYPT替换?

1 个答案:

答案 0 :(得分:1)

你需要:

  1. 解密
  2. 替换
  3. 再次加密
  4. UPDATE my_table 
       SET my_field = AES_ENCRYPT(REPLACE(AES_DECRYPT(my_field , 'KEY'), 'olddata', 'new data'), 'KEY') 
     WHERE AES_DECRYPT(my_field , 'KEY') LIKE '%olddata%'
    

    以下是dbfiddle演示