可能这个问题以前已经回答过,但我找不到。
我正在使用一个 2/3 年前的 MySQL 数据库,它的列名中有连字符。当我尝试从我的 Java 代码中使用这些名称时,这些名称在连字符处被破坏(例如,air_port 变为 air),因此找不到。我尝试在我的代码中将连字符替换为下划线,希望数据库可以平等对待它们,但这不起作用。
如何转义连字符或如何访问这些列?这可能是正在使用的字符集的问题吗?
将名称括在“反引号”中
列名中是否有连字符 (-) 或下划线 (_)?
连字符是一个大问题,因为如果您最终将列名映射到变量,大多数语言都不喜欢在变量名中使用连字符。也许您正在使用其中一个 Java 库,它会自动生成名称基于列名的变量或对象。
根据问题的性质,您可以使用几种不同的方法:
这些都不是很好的解决方案,但它们应该可以帮助您入门。祝你好运!
数据库名称中的连字符也不好。但是您可以将它们与反引号技巧一起使用`
`name-with-hyphen`
最好不要在列名中使用连字符。我在 JOIN 语句中遇到了一个大问题,其中连字符造成了很大的麻烦——甚至在反引号中转义名称也不起作用。
将列名转换为使用下划线 - 这是最安全的方法。
作为替代方案 - 如果甚至反引号也会导致问题(你知道它发生在我身上)并且无论如何你都想坚持使用连字符 - 只需创建一个VIEW
以反映具有所有字段的同一个表而query the view
不是原始表。
我必须创建一个名为 pre-ca_db 的数据库。
我解决了这个问题
create database `pre-ca_db`;
祝你好运!
MySQL 论坛上的这个条目表明您可能有问题。但是,我认为它指的是数据而不是列名。
这就是说“不要这样做”。不知道权威性如何。