表字段是否可以包含连字符?

Jac*_*cob 25 mysql sql database

我在MySQL表中有一个表,其字段名为'product',并希望将其重命名为'ds-product'.

我正在使用的CMS类型系统使用formfields的id作为要插入的表字段的名称.

对于大多数人来说这很好用,但是对于特定的字段,它会将'ds-'添加到我给它的任何ID,所以我必须使表字段名称匹配.

但是,在尝试执行查询时,我收到错误

'字段列表'中的未知列'sales.ds'

我有什么方法可以拥有一个名为ds-product的领域吗?

Bil*_*win 37

是的,如果使用分隔标识符,则可以使用标点符号,空格,国际字符和SQL保留字:

SELECT * FROM `my-table`;
Run Code Online (Sandbox Code Playgroud)

在MySQL中,使用反向标记.在标准SQL中,使用双引号.

或者,如果您使用MySQL,则可以设置ANSI_QUOTESSQL模式:

SET SQL_MODE = ANSI_QUOTES;
SELECT * FROM "my-table";
Run Code Online (Sandbox Code Playgroud)

  • 不,连字符是运算符,您不能在标识符的中间使用它.如果你还有列'ds`和`product`怎么办?然后`ds-product`将是一个算术表达式:一列减去另一列.SQL支持分隔标识符,因此您可以解决这种歧义.FWIW,我完全不知道任何其他编程语言! (4认同)

小智 7

尝试在桌子上通话的最后部分放置括号。在您的情况下:

SELECT * FROM [TABLE-NAME];
Run Code Online (Sandbox Code Playgroud)

只要确保仅在表格名称上加上方括号即可。不在整个数据库中

SELECT * FROM some_database.anotherdatabase.[your-table];
Run Code Online (Sandbox Code Playgroud)

PS也可以在列上使用。

我正在使用Microsoft SQL Server管理。

  • MS,MS SQL和MySQL不同,通常需要不同的答案。你不能混合他们。我建议您删除此答案,然后再进行一堆否决。 (2认同)