【问题标题】:SQL special characters escaping from input从输入中转义的 SQL 特殊字符
【发布时间】:2019-04-10 12:10:57
【问题描述】:

在我的数据库中,我有一些文件路径,有时我需要更新部分路径。如何处理 ex 的特殊字符。更新数据时在\ruba\rubla

\r 是特殊字符

\rubla 来自 C# 输入参数到 SQL 查询

SQL:

update table
set Location = CONCAT('gabiluca.at.gmail.com\folder', 
                       substring(Location, length('gabiluca.at.gmail.com\director') + 1))
where Location like 'gabiluca.at.gmail.com\\\\folder%'

\\\\翻译成\

简单案例:

在 mysql 表中,您有一个 Windows 相对路径存储在名为 Location 的列中。

Id  Name    Location
38  MuseScore 3.lnk gabiluca.at.gmail.com
39  redenumit   gabiluca.at.gmail.com
40  interior    gabiluca.at.gmail.com\redenumit
41  FileZilla Client.lnk    gabiluca.at.gmail.com\redenumit
42  MuseScore 3.lnk gabiluca.at.gmail.com\redenumit\interior

现在尝试在 mysql 中更新:'redenumit',并在所有记录上使用更新语句。有效吗?保留前缀。例如,当您将文件夹“redenumit”重命名为“changed”时,可以这样想。

我什至不能这样查询(这是问题所在):

select * 
from MediaResource
where Location like 'gabiluca.at.gmail.com\redenumit%'

【问题讨论】:

  • 您在寻找verbatim string literals吗?
  • 您能否更新一下您在查询中尝试执行的操作?例如,值 'a' 到值 'b'
  • @ZoharPeled 是的,但是对于 mysql
  • @sabharikarthik 我更新了我的问题。如果重命名内部文件夹,我需要更新数据库中的相对路径。

标签: c# mysql sql


【解决方案1】:

你能试试这个命令吗:

SET sql_mode = NO_BACKSLASH_ESCAPES;

并重置:

SET sql_mode = '';

无论何时处理完成?

【讨论】:

  • SET sql_mode=NO_BACKSLASH_ESCAPES; select * from MediaResource where Location like 'gabiluca.at.gmail.com\redenumit%' NOT WORKING ..
  • 否 :( 没有
  • 更新没有真正的问题,但更多关于更新或选择的 where 子句
  • 让我们在这里继续讨论:chat.stackoverflow.com/rooms/191603/…
  • 事实证明这是要走的路..我有一个小错误导致查询集没有结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-27
  • 1970-01-01
  • 2012-08-23
  • 1970-01-01
  • 2013-06-22
  • 1970-01-01
相关资源
最近更新 更多