MySQL DB中列名称中的连字符

时间:2009-05-19 23:15:29

标签: mysql database hyphen

可能此问题已经得到解答,但我找不到。

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

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

6 个答案:

答案 0 :(得分:40)

将名称括在`back-ticks`

答案 1 :(得分:4)

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

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

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

  1. 使用ALTER TABLE重命名所有列。请注意,这可能会影响参照完整性或依赖于数据库的其他应用程序。如果您不知道这意味着什么,请不要这样做。
  2. 创建SQL视图,只需重新创建所需的表,但使用“更好”的列名称。这不是很有效,但它可以让你得到你想要的东西。
  3. 在运行SELECT语句时使用AS关键字重命名查询中的列。
  4. 这些都不是很好的解决方案,但它们应该让你开始。祝你好运!

答案 2 :(得分:3)

数据库名称中的连字符也不好。但是你可以用反引号技巧“

来使用它们
`name-with-hyphen`

答案 3 :(得分:1)

最好不要在列名中使用连字符。我在连字句中遇到了一个很大的问题,连字符引起了大麻烦 - 甚至在后面的滴答声中逃避的名字也没有用。

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

答案 4 :(得分:1)

我必须创建一个名为pre-ca_db的数据库。

我用

解决了这个问题
create database `pre-ca_db`;
祝你好运!

答案 5 :(得分:0)

MySQL论坛上的

This entry表明您可能遇到了问题。但是,我认为它指的是数据,而不是列名。

This说“不要这样做”。不知道它有多权威。