我在Ubuntu 10.04上使用SQSH(版本2.1)使用如下命令连接到MSSQL数据库:
sqsh -S server -U user -P password -D database
我有一个名为My Table的表,但我找不到在其上运行SELECT查询的方法。这是我到目前为止所尝试的:
SELECT * FROM 'My Table'
go
输出:“我的表”附近的语法不正确。 (我对双引号也一样)
\set t="My Table"
SELECT * FROM $t
go
输出:无效的对象名称“我的”。 (这很奇怪,因为如果我做\ echo $ t,我得到完整的表名)
SELECT * FROM My\\ Table
go
输出:无效的对象名称“我的”。
SELECT * FROM [My Table]
go
输出:无法使用DB-Library(例如ISQL)或ODBC 3.7或更早版本,将仅使用Unicode的归类或ntext数据中的Unicode数据发送给客户端。
这个最后一个命令适用于没有任何空格的表名。
更新:其他命令工作正常,例如我可以通过以下方式获取表格描述:
SELECT column_name,data_type FROM information_schema.columns WHERE table_name = 'My Table'
go
答案 0 :(得分:11)
将表名放在引号中在MS SQL Server中不起作用
正确的方法是使用[ ]
:
SELECT * FROM [My Table]
答案 1 :(得分:3)
我正在使用SQL 2008R2,以下内容适用于我
['table name']
答案 2 :(得分:2)
终于找到了the solution。我必须将以下两行添加到/etc/freetds/freetds.conf
tds version = 8.0
client charset = UTF-8
答案 3 :(得分:0)
使用SQL Server时,请尝试将QUOTED_IDENTIFIER设置为ON。有关QUOTED_IDENTIFIER的详细信息,请参阅:http://msdn.microsoft.com/en-us/library/ms174393.aspx