10

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

输出:纯 Unicode 排序规则中的 Unicode 数据或 ntext 数据无法使用 DB-Library(例如 ISQL)或 ODBC 版本 3.7 或更早版本发送到客户端。

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

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

SELECT column_name,data_type FROM information_schema.columns WHERE table_name = 'My Table'
go
4

4 回答 4

15

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

SELECT * FROM [My Table]
于 2012-01-19T20:49:23.350 回答
4

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

['table name']
于 2015-03-09T19:37:55.840 回答
2

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

tds version = 8.0
client charset = UTF-8
于 2012-01-19T18:20:23.543 回答
0

在使用 SQL Server 时尝试将 QUOTED_IDENTIFIER 设置为 ON。有关 QUOTED_IDENTIFIER 的更多信息,请参阅:http: //msdn.microsoft.com/en-us/library/ms174393.aspx

于 2012-01-19T17:46:54.123 回答