当前位置: 首页 > 面试题库 >

节点MySQL转义LIKE语句

陈昊昊
2023-03-14
问题内容

如何在node-mysql中转义MySQL LIKE语句?

遵循以下原则

"SELECT * FROM card WHERE name LIKE '%" + connection.escape(req.body.search) + "%'"

结果是

'SELECT * FROM card WHERE name LIKE \'%\'hello\'%\''

这是语法错误。如果我使用的替代语法

connection.query("SELECT * FROM card WHERE name LIKE '%?%'", req.body.search, function () {});

导致类似的语法错误。我也尝试过

connection.query("SELECT * FROM card WHERE name LIKE ?", '%' + req.body.search + '%', function () {});

最终只是转义了’%’符号。


问题答案:

不知道为什么%在上一个示例中转义了它,因为这对我来说很好:

// lifted from my code:
var value = 'ee20e966289cd7';
connection.query('SELECT * from django_session where session_key like ?', '%' + value + '%', ...)

// Result:
[ { session_key: '713ee20e966289cd71b936084a1e613e', ... } ]

当我在驱动程序中打开调试功能(debug:true作为参数传递给mysql.createConnection)时,它无法逃脱百分号:

{ command: 3,
  sql: 'SELECT * from django_session where session_key like \'%ee20e966289cd7%\'' }

(它 确实 转义了单引号,但这仅用于显示目的)

(使用mysql@2.0.0-alpha8



 类似资料:
  • 本文向大家介绍您如何或两个MySQL LIKE语句?,包括了您如何或两个MySQL LIKE语句?的使用技巧和注意事项,需要的朋友参考一下 您可以使用以下语法或两个类似的语句- 为了理解上述语法,让我们创建一个表。创建表的查询如下- 使用insert命令在表中插入一些记录。查询如下- 使用select语句显示表中的所有记录。查询如下- 以下是输出- 这是使用两个LIKE和OR运算符的查询- 以下是

  • 问题内容: 在Oracle中使用SQL运算符时,如何转义通配符(和)? 我今天遇到一个愚蠢的问题。我需要使用来搜索varchar列上是否存在下划线。正如预期的那样,它不起作用- 因为根据SQL,下划线是通配符。这是我的(简化)代码: 我在PostgreSQL中尝试了以下查询,它们返回了我想要的行: 不幸的是,它在Oracle 12c中不起作用。是否有“标准”的转义通配符方式?还是至少在Oracle

  • 本文向大家介绍MySQL SELECT...LIKE (%),包括了MySQL SELECT...LIKE (%)的使用技巧和注意事项,需要的朋友参考一下 示例 任意位置的“ adm”: 以“ adm”开头: 以“ adm”结尾: 正如%一个字符LIKE条款任意数目的字符匹配,_匹配字符一个字符。例如, 性能说明如果上有一个索引username,则 LIKE 'adm' 执行与`='adm'相同的

  • 问题内容: 我有一张桌子,上面放着产品。我需要进行查询,以找到所有与用户输入值匹配的结果。我正在使用输入的插入。 当用户输入字符串包含“ _”或“%”时,就会出现问题,因为它们被解释为特殊字符。另一方面,请考虑以下因素: 命令对象使用参数将值传递给SQL语句或存储过程,从而提供类型检查和验证。与命令文本不同,参数输入被视为文字值,而不是可执行代码。 我不应该有这样的问题。我是否需要替换/转义输入字

  • 问题内容: (注意:这个问题不是关于转义查询,而是关于转义结果) 我正在使用GROUP_CONCAT将多行合并为一个逗号分隔的列表。例如,假设我有两个(示例)表: 我想列出所有帖子以及对帖子发表评论的每个用户名的列表: 给我: 这很好用,但是如果用户名包含逗号会破坏用户列表。MySQL是否具有可以让我转义这些字符的功能?(请假定用户名可以包含任何字符,因为这只是示例架构) 问题答案: 如果用户名中

  • 问题内容: 我如何将IN表与like一起使用?这样我就可以在其中使用%了?我的意思是: 我已经尝试过: 但是它给出了错误“操作数应包含1列” 问题答案: 您可以使用许多LIKE表达式: 或者您可以使用正则表达式: 或者,巧妙地