在 MySQL 查询中转义连字符(不使用反引号)
Escaping hyphen in MySQL query (not using a backtick)
我们有一个现有的架构,我们正在尝试将一些石英 table 放入其中,但是 table 的名称中包含连字符,因此我们想使用前缀像“08-Scheduling_QUARTZ_”
由于 quartz 不将任何查询包含在反引号中,因此前缀不起作用。
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '08-Scheduling_QUARTZ_TRIGGERS SET TRIGGER_STATE = 'WAITING' WHERE SCHED_NAME' at line 1]]
想知道是否有 在 mysql 查询 中除了整个 [=35] 之外还有其他方法可以转义“-” =]名字?
我试过了
x'-'x
x\-x
x"-"x
x`-`x
不可以,如果标识符带有某些标点符号,您必须对其进行定界。
在MySQL中,默认的标识符分隔符是反引号。
如果启用 ANSI
或 ANSI_QUOTES
SQL 模式,则可以使用双引号作为标识符分隔符。
如果您不想使用分隔符,则必须选择不同的约定来为您的 table 名称添加前缀。例如,您可以使用 _
。
阅读 https://dev.mysql.com/doc/refman/8.0/en/identifiers.html 以了解有关不带定界符的标识符中允许的字符的更多详细信息。
我们有一个现有的架构,我们正在尝试将一些石英 table 放入其中,但是 table 的名称中包含连字符,因此我们想使用前缀像“08-Scheduling_QUARTZ_”
由于 quartz 不将任何查询包含在反引号中,因此前缀不起作用。
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '08-Scheduling_QUARTZ_TRIGGERS SET TRIGGER_STATE = 'WAITING' WHERE SCHED_NAME' at line 1]]
想知道是否有 在 mysql 查询 中除了整个 [=35] 之外还有其他方法可以转义“-” =]名字?
我试过了
x'-'x
x\-x
x"-"x
x`-`x
不可以,如果标识符带有某些标点符号,您必须对其进行定界。
在MySQL中,默认的标识符分隔符是反引号。
如果启用 ANSI
或 ANSI_QUOTES
SQL 模式,则可以使用双引号作为标识符分隔符。
如果您不想使用分隔符,则必须选择不同的约定来为您的 table 名称添加前缀。例如,您可以使用 _
。
阅读 https://dev.mysql.com/doc/refman/8.0/en/identifiers.html 以了解有关不带定界符的标识符中允许的字符的更多详细信息。