使用SQSH在名称中带有空格的表上进行SELECT查询

时间:2012-01-19 13:19:31

标签: sql-server sqsh

我在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

4 个答案:

答案 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