使用 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' 个问题。
使用REPLACE。对于更难的事情 REGEXP_REPLACE.
SELECT REPLACE(somecolumn, '\"', '"')
SELECT REGEXP_REPLACE('"..."', '(^"|"$)', '')
后者将取消引用整个字符串,因为 ^
是开始,$
是结束。
顺便说一句,我实际上会更正 table 中的所有数据一次。 (备份后。)
我有一个 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' 个问题。
使用REPLACE。对于更难的事情 REGEXP_REPLACE.
SELECT REPLACE(somecolumn, '\"', '"')
SELECT REGEXP_REPLACE('"..."', '(^"|"$)', '')
后者将取消引用整个字符串,因为 ^
是开始,$
是结束。
顺便说一句,我实际上会更正 table 中的所有数据一次。 (备份后。)