【发布时间】:2012-02-14 03:34:00
【问题描述】:
我在 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
【问题讨论】:
-
您使用的是 Sybase,并且您有一个名称中包含空格的表?
-
不,它是一个 MSSQL 数据库。抱歉,标签可能具有误导性。
-
你能测试一下如果你把表名中的空格去掉会发生什么吗?
-
正如我在问题末尾提到的那样:还有其他表的名称中没有空格,并且对它们来说一切正常,即我可以自己使用名称,或者将其包装在方括号中,或者将其分配给一个变量并使用它,它工作正常。
标签: sql-server sqsh