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

jac*_*cnr 8 sql-server sqsh

我在Ubuntu 10.04上使用SQSH(版本2.1)使用如下命令连接到MSSQL数据库:

sqsh -S server -U user -P password -D database
Run Code Online (Sandbox Code Playgroud)

我有一个名为My Table的表,但我找不到在其上运行SELECT查询的方法.这是我到目前为止所尝试的:

SELECT * FROM 'My Table'
go
Run Code Online (Sandbox Code Playgroud)

输出:"我的表"附近的语法不正确.(双引号我也一样)

\set t="My Table"
SELECT * FROM $t
go
Run Code Online (Sandbox Code Playgroud)

输出:无效的对象名称"我的".(这很奇怪,因为如果我做\ echo $ t,我得到完整的表名)

SELECT * FROM My\\ Table
go
Run Code Online (Sandbox Code Playgroud)

输出:无效的对象名称"我的".

SELECT * FROM [My Table]
go
Run Code Online (Sandbox Code Playgroud)

输出:不能使用DB-Library(例如ISQL)或ODBC 3.7或更早版本将Unicode数据(仅限Unicode的归类或ntext数据)发送到客户端.

最后一个命令适用于没有任何空格的表名.

更新:其他命令工作正常,例如我可以获取表描述:

SELECT column_name,data_type FROM information_schema.columns WHERE table_name = 'My Table'
go
Run Code Online (Sandbox Code Playgroud)

Chr*_*cht 12

将表名放在引号中在MS SQL Server中不起作用.
正确的方法是使用[ ]:

SELECT * FROM [My Table]
Run Code Online (Sandbox Code Playgroud)


小智 5

我使用 SQL 2008R2,以下内容对我有用

['table name']
Run Code Online (Sandbox Code Playgroud)


jac*_*cnr 2

终于找到了解决办法。我必须将以下两行添加到 /etc/freetds/freetds.conf

tds version = 8.0
client charset = UTF-8
Run Code Online (Sandbox Code Playgroud)