2016-04-04 6 views
-2

テーブル名に[]'の使用に関するいくつかの問題があります。例えば
理由このエラー[、]と 'を使用したSQLエラーテーブル名

メッセージ4104での作業

SELECT TOP 1000 [O'test] 
     ,[NumeNOU] 
    FROM [dbname].[dbo].[O'conor] 

このない

use dbname 
GO 
DECLARE @COUNT int 
SELECT @COUNT = Count(*) FROM dbname.INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = [dbname].[dbo].[O'conor] 
PRINT @COUNT 

、レベル16、状態1、マルチパート識別子 4ライン"dbname.dbo.O'conor"はバインドできませんでした。エラー

メッセージ207、レベル16、状態1、行4無効な列名 'O''conor' が

またはこの

use dbname 
    GO 
    DECLARE @COUNT int 
    SELECT @COUNT = Count(*) FROM dbname.INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = [O'conor] 
    PRINT @COUNT 

が、この

use dbname 
     GO 
     DECLARE @COUNT int 
     SELECT @COUNT = Count(*) FROM dbname.INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'O''conor' 
     PRINT @COUNT 
+0

TABLE_NAME = [dbname]。[dbo]。[O'conor] これは引用符で囲む必要があります。 '[DBNAME]。[DBO]。[O'conor]' – Alex

+0

1 'WHERE TABLE_NAMEは= [O'conor]' 'あなたが列名として使用しようとしているので、あなたが代わりに行うだろう間違いなく間違っているとWHERE TABLE_NAME = 'O''conor'' –

+0

エラーメッセージは完全に正しいですが、それらのテーブルにはその名前の列がありません。テーブル名がどこにある行を探したいかもしれませんが、文字列リテラルを使用し、存在しない列を参照する必要はありません。だから質問は何ですか?あなたは「これは動作しませんが、これはします」と言っています。なぜですか? ? –

答えて

0

1 + 2

use dbname 
GO 
DECLARE @COUNT int 
SELECT @COUNT = Count(*) FROM dbname.INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = [dbname].[dbo].[O'conor] 
PRINT @COUNT 

use dbname 
GO 
DECLARE @COUNT int 
SELECT @COUNT = Count(*) FROM dbname.INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = [O'conor] 
PRINT @COUNT 

テサクエリのように働いているTABLE_NAMEがsysname値を見込んでいますが、識別子を供給するので、動作しません。

use dbname 
GO 
DECLARE @COUNT int 
SELECT @COUNT = Count(*) FROM dbname.INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'O''conor' 
PRINT @COUNT 

あなたがsysname値を供給しているため、このクエリは動作します。

サイドノート:それが唯一の文字、数字、アンダースコア、あなたが彼らの周りに角括弧を使用する必要はありませんそのように含まれているオブジェクト名を使用することをお勧めします。

+0

[助けて喜ん: - )]あなたの答え – RobertP

+0

のためにありがとうございました(http://meta.stackoverflow.com/questions/291325/how-to-show-appreciation- to-a-user-on-stackoverflow/291327#291327) –

関連する問題