2017-06-16 72 views
0

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

如果不是那么加密我会用

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

你需要:

  1. 解密
  2. 更换
  3. 加密再次
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演示