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

出力:無効なオブジェクト名'My'。(\ echo $ tを実行すると、完全なテーブル名が取得されるため、これは奇妙です)

SELECT * FROM My\\ Table
go

出力:無効なオブジェクト名'My'。

SELECT * FROM [My Table]
go

出力:Unicodeのみの照合またはntextデータのUnicodeデータは、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 に答える