mysql - 为什么使用 "?"和 ":"等字符的简单 varchar 插入要求在 MySQL 中绑定(bind)变量?

标签 mysql toad

如果我的简单 varchar 字段包含“?”,我正在从 TOAD 执行 MySQL 脚本(插入)或“:”,TOAD 要求我绑定(bind)变量 (@f0),而我只想插入“?”和句子中的“:”字面上

我需要 SET sql_mode = 'PIPES_AS_CONCAT' 并将 "?"":" 的所有实例替换为 | | CHAR(63) || 使其有效。如果我使用 "\?""\:" 进行转义,则没有用,不像转义其他有效的特殊字符。

INSERT INTO `specs` (`ID`, `ParentProductsID`, `SpecsGroup`, `SpecsSubGroup`, `SpecsSubGroup2`, `SpecsText`) VALUES (1289, 27, 'What\'s in the box?', '', '', 'User guide');

这个语句要求绑定(bind)变量@f0,除非我像这样工作,但时间更长:

SET sql_mode = 'PIPES_AS_CONCAT';
INSERT INTO `specs` (`ID`, `ParentProductsID`, `SpecsGroup`, `SpecsSubGroup`, `SpecsSubGroup2`, `SpecsText`) VALUES (1289, 27, 'What\'s in the box' || CHAR(63) || '', '', '', 'User guide');

有没有更简单的方法?

注意:我正在使用 TOAD for MySQL,我怀疑其他 SQL 编辑器可能不会发生这种情况。

更新:当我在 PHPMyAdmin 中尝试时,它工作正常,它处理“?”确实在每个插入中。

最佳答案

This is not (yet) an answer but more detailed questions:

我怀疑发生的情况是字符串以某种方式被转义,因此 SQL 没有意识到 ?/: 是文字。

你有吗read the manual

  • TOAD 是否自动转义给它的 SQL 命令(即双重转义)?

  • 您可以直接使用 MySQL 命令行来查看问题是否仍然出现吗?

  • 您可以尝试使用不包含引号、转义或其他方式的字符串在这里插入数据吗?,看看这些因素是否相关?

  • 如果您无法使用命令行,您可以尝试使用其他 SQL 接口(interface),看看问题是否是 TOAD 特有的?

  • 您能否检查一下 TOAD 设置,以确保它没有被设置为自动以某种方式期望每个 SQL 都是准备好的语句。 (是的,抓着救命稻草......但一定要检查设置!)

关于mysql - 为什么使用 "?"和 ":"等字符的简单 varchar 插入要求在 MySQL 中绑定(bind)变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44105899/

相关文章:

mysql - AWS - 创建只读副本的只读副本

php - Cakephp 3.0 中的自定义查询?

mysql - 太多的子查询会导致内部服务器错误500吗?

Mysql 触发器不会将last_insert_id() 传递给连接

oracle - Oracle执行计划

java - 可以用 TOAD 编写 java 程序吗?

mysql - 使用随机 PRIMARY KEY 列的值缓慢插入 InnoDB 表

mysql - 升级到 ToadForMySQL 版本 7.2.0.2922,现在出现身份验证问题

plsql - 在 Toad 中调试 PLSQL