使用 mysql 命令删除字符串中的转义符号

Remove escape symbols in string using mysql command

我有一个 MySQL 列,其中的数据看起来像这样,

我需要通过 convert(somecolumn,JSON) 将列转换为 JSON 格式。但是,似乎我首先需要删除转义符号(例如 \")。我做了一些搜索,发现 mysql_real_escape_string 可以完成这项工作(来自 )。

但是如果我没理解错的话,mysql_real_escape_string是一个PHP命令。是否有任何本机 MySQL 命令执行与 mysql_real_escape_string 类似的操作(类似于 convert(mysql_native_function(somecolumn),JSON))?

mysql 库很旧.. 如果你真的需要使用类似的东西 - 使用 mysqli

mysql_real_escape_string 并不像您想象的那样安全,请参阅:https://security.stackexchange.com/questions/8028/does-mysql-escape-string-have-any-security-vulnerabilities-if-all-tables-using-l

那就是说不使用它们中的任何一个而是使用 Php PDO 并替换如下内容会更好:

$data = [
    'name' => $name,
    'surname' => $surname,
    'sex' => $sex,
];
$sql = "INSERT INTO users (name, surname, sex) VALUES (:name, :surname, :sex)";
$stmt= $pdo->prepare($sql);
$stmt->execute($data);

它将为您解决 'escaping' 个问题。

此处有更多示例:https://phpdelusions.net/pdo_examples/insert

使用REPLACE。对于更难的事情 REGEXP_REPLACE.

SELECT REPLACE(somecolumn, '\"', '"')
SELECT REGEXP_REPLACE('"..."', '(^"|"$)', '')

后者将取消引用整个字符串,因为 ^ 是开始,$ 是结束。

顺便说一句,我实际上会更正 table 中的所有数据一次。 (备份后。)