我在尝试在我的 node.js 应用程序中编写 MySQL 查询时遇到问题。在编写大型查询时,我需要将代码拆分成多行,因此我需要使用反引号来编写 JavaScript 字符串。重点是在我的 MySQL 查询中,我还需要使用反引号作为查询的一部分,如下所示:
SELECT `password` FROM `Users`
所以在 node.js 中执行查询的代码应该是这样的:
database.query(`
SELECT `password`
FROM `Users`
`);
但代码不起作用,因为查询的反引号被解释为字符串文字的反引号。我可以像这样使用单引号或双引号连接几个字符串文字:
database.query(
'SELECT `password` ' +
'FROM `Users`'
);
但我试过了,它很快就变得一团糟。
我还尝试使用一种不同的方法,使用特殊的字符作为反引号替换,并使用 replaceAll()
函数将其替换为反引号,如下所示(受 MSSQL 启发):
`SELECT [password]
FROM [Users]`.replaceAll('[', '`').replaceAll(']', '`');
所以我的问题是:有没有办法在不转义查询反引号或不连接多个单引号或双引号字符串文字的情况下编写多行 MySQL 查询?
最佳答案
我宁愿在我的 MySQL 查询中不使用反引号。如果您仍然需要在表名周围加上引号,您可以尝试设置 ANSI_QUOTES 以允许使用 "
instaead : https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_ansi_quotes
如果这不起作用,您可能更愿意转义反引号:Template literals with nested backticks(`) in ES6
关于javascript - 如何使用反引号在 node.js 中编写多行 MySQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64000550/