MySQL DB中列名称中的连字符

eup*_*a83 21 mysql database hyphen

可能这个问题已经得到了回答,但我找不到了.

我使用的是2/3岁的MySQL数据库,其列名称中包含连字符.当我尝试使用我的Java代码中的这些名称时,名称会在连字符处断开(例如air_port变为空气),因此找不到.我尝试在我的代码中将连字符替换为下划线,希望数据库可以平等对待它们,但这不起作用.

如何逃脱连字符或如何访问这些列?这可能是正在使用的字符集的问题吗?

dar*_*7yl 41

将名称括在`back-ticks`中


Rob*_*ter 5

列名中是否有连字符(-)或下划线(_)?

连字符是一个大问题,因为如果最终将列名映射到变量,则大多数语言都不喜欢在变量名中包含连字符。也许您正在使用一种Java库,该库自动生成其名称基于列名称的变量或对象。

根据问题的性质,可以使用两种不同的方法:

  1. 使用ALTER TABLE重命名所有列。请注意,这可能会影响参照完整性或依赖数据库的其他应用程序。如果您不知道这意味着什么,请不要这样做。
  2. 创建简单地重述所需表但具有“更好”列名的SQL视图。这不是很有效,但是它将使您得到想要的东西。
  3. 运行SELECT语句时,请使用AS关键字来重命名查询中的列。

这些都不是很好的解决方案,但是它们应该可以帮助您入门。祝好运!


Hex*_*dus 5

最好不要在列名称中使用连字符。我在 JOIN 语句中遇到了一个大问题,其中连字符造成了很大的麻烦 - 甚至在反引号中转义名称也不起作用。

将列名转换为使用下划线 - 这是最安全的方法。

作为替代方案 - 如果即使是反引号也会引起问题(你知道这发生在我身上),并且无论如何你都想坚持使用连字符 - 只需创建一个VIEW来反映包含所有字段的同一个表,而query the view不是原始表。