2017-06-16 55 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演示