使用mysql命令删除字符串中的转义符号[关闭]
Posted
技术标签:
【中文标题】使用mysql命令删除字符串中的转义符号[关闭]【英文标题】:Remove escape symbols in string using mysql command [closed] 【发布时间】:2021-12-31 20:12:11 【问题描述】:我有一个 mysql 列,其中的数据看起来像这样,
我需要通过convert(somecolumn,JSON)
将列转换为JSON
格式。但是,似乎我首先需要删除转义符号(例如,\"
)。我做了一些搜索,发现mysql_real_escape_string
可以完成这项工作(来自this question)。
但如果我理解正确的话,mysql_real_escape_string
是一个 php 命令。是否有任何与mysql_real_escape_string
(类似于convert(mysql_native_function(somecolumn),JSON)
)做类似事情的原生MySQL命令?
【问题讨论】:
【参考方案1】:使用REPLACE。对于更难的事情 REGEXP_REPLACE。
SELECT REPLACE(somecolumn, '\"', '"')
SELECT REGEXP_REPLACE('"..."', '(^"|"$)', '')
后者将取消引用整个字符串,因为^
是开头,$
是结尾。
顺便说一句,我实际上会更正表中的所有数据一次。 (备份后。)
【讨论】:
【参考方案2】: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);
它会为你解决“逃避”问题。
更多示例:https://phpdelusions.net/pdo_examples/insert
【讨论】:
以上是关于使用mysql命令删除字符串中的转义符号[关闭]的主要内容,如果未能解决你的问题,请参考以下文章