Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql “SQL-更改”;或';在SQL中,添加文本更容易_Mysql_Sql_Import_Delimiter - Fatal编程技术网

Mysql “SQL-更改”;或';在SQL中,添加文本更容易

Mysql “SQL-更改”;或';在SQL中,添加文本更容易,mysql,sql,import,delimiter,Mysql,Sql,Import,Delimiter,因此,我正在建立一个包含所有短信的数据库,以获取有关我的习惯的信息,而我在导入短信内容时遇到了困难。每当有撇号(通常)或引号(不像你想象的那么少)时,我就会遇到语法问题 有没有一种方法可以让MySQL使用“或”以外的东西来封装字符串(具体来说,字段是VARCHAR)。如果我可以在短信中使用~或其他一些很少使用的字符,我的生活会变得简单得多。最好使用参数化查询,然后数据库连接器会以正确的方式将字符串发送到数据库 如果需要通过将值连接到查询中来构建查询,则需要正确地转义字符串,使其成为SQL代码中的

因此,我正在建立一个包含所有短信的数据库,以获取有关我的习惯的信息,而我在导入短信内容时遇到了困难。每当有撇号(通常)或引号(不像你想象的那么少)时,我就会遇到语法问题


有没有一种方法可以让MySQL使用“或”以外的东西来封装字符串(具体来说,字段是VARCHAR)。如果我可以在短信中使用~或其他一些很少使用的字符,我的生活会变得简单得多。

最好使用参数化查询,然后数据库连接器会以正确的方式将字符串发送到数据库

如果需要通过将值连接到查询中来构建查询,则需要正确地转义字符串,使其成为SQL代码中的字符串文字

对于字符串,请坚持使用一个分隔符,不要在某些字符串周围使用撇号,而在其他字符串周围使用求变标记,这只会使正确转义它们更加困难。我建议您使用撇号,因为这是SQL标准规定的

要将字符串正确转义为由撇号分隔的字符串文字,应:

  • 用双反斜杠替换所有反斜杠,然后
  • 用反斜杠和撇号替换所有撇号
例如,要使字符串
成为带有反斜杠(\)的“示例”。
成为字符串文字,在查询中应如下所示:

insert into Table (txt) values ('It\'s an "example" with a backslash(\\).')

注意:这是MySQL转义字符串的正确方法。其他数据库可能会使用不同的字符进行转义,并且需要转义其他字符,因此在任何其他数据库中使用此方法可能会失败,甚至可能会导致SQL注入攻击。

如果您使用带占位符的预处理语句,则不必关心我相信你正在使用的API会提供这些。不:MySQL甚至比SQL标准还要多。标准是单引号。你说的“带占位符的准备语句”是什么意思“?您是否手工编写每个SQL语句?通常使用Java、Perl、PHP、Python等编程语言。。。与数据库通信。我刚刚开始数据库和JavaGUI的工作。我想我明白你的意思了。我想在Java方面处理解析。很棒的东西。非常感谢你。