我在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替换?
答案 0 :(得分:1)
你需要:
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演示