2012-03-27 111 views
7

根據維基百科這種語法看起來是正確的......SQL Server查詢錯誤

INSERT INTO dbo.metadata_type ("name", "publishable") 
VALUES 
("Content Owner", 0), 
("Content Coordinator", 0), 
("Writer", 0), 
("Content Type", 0), 
("State", 1), 
("Business Segment", 0), 
("Audience", 0), 
("Product Life Cycle Stage", 0), 
("Category", 0), 
("Template", 0) 

遇到錯誤。我已經試過包裝在`的列名,但沒有任何工作...

錯誤代碼207,SQL狀態42S22:無效的列名稱內容所有者「。
錯誤代碼207,SQL狀態42S22:無效的列名稱'Content Coordinator'。
錯誤代碼207,SQL狀態42S22:無效的列名稱'Writer'。
錯誤代碼207,SQL狀態42S22:無效的列名稱'內容類型'。
錯誤代碼207,SQL狀態42S22:無效的列名稱'狀態'。

+2

用單引號插入! – 2012-03-27 17:10:29

+4

除了使用單引號 - 在單個INSERT語句中指定多個元組的語法在SQL Server ** 2008 **和更新版本中是有效的 - 它在早期版本中不起作用。 – 2012-03-27 17:22:36

回答

12

在SQL Server中,字符串值由',不"分隔。

另外,列名應該用方括號括起來,或者保留原樣(如果它們不包含空格)。

您的查詢,因此應該是這樣的:

INSERT INTO dbo.metadata_type (name, publishable) VALUES 
    ('Content Owner', 0), 
    ('Content Coordinator', 0), 
    ('Writer', 0), 
    ('Content Type', 0), 
    ('State', 1), 
    ('Business Segment', 0), 
    ('Audience', 0), 
    ('Product Life Cycle Stage', 0), 
    ('Category', 0), 
    ('Template', 0) 
3

必須使用單引號,而不是爲你的價值觀雙引號和無引號都指定要插入的列:

INSERT INTO dbo.metadata_type (name, publishable) VALUES 
('Content Owner', 0), 
('Content Coordinator', 0), 
('Writer', 0), 
('Content Type', 0), 
('State', 1), 
('Business Segment', 0), 
('Audience', 0), 
('Product Life Cycle Stage', 0), 
('Category', 0), 
('Template', 0) 
3

sql的'錯誤207'與表的錯誤列名相關。我似乎在嘗試檢索關於不存在於指定表中的列名稱的數據。我建議你確保你在查詢中使用了正確的列名。還要檢查查詢中提到的表名是否正確。試試這個,讓我知道你是否仍然得到相同的錯誤。

如果你想插入使用「的價值觀爲varchar」儘量用簡單'

這樣的:如果你正在尋找一個INSERT語句插入多行

INSERT INTO dbo.metadata_type (name, publishable) VALUES 
('Content Owner', 0), 
('Content Coordinator', 0), 
('Writer', 0), 
('Content Type', 0), 
('State', 1), 
('Business Segment', 0), 
('Audience', 0), 
('Product Life Cycle Stage', 0), 
('Category', 0), 
('Template', 0) 
+0

您的查詢包含錯誤:列名不得包含引號。 – 2012-03-27 17:17:40

+0

@FrancisP立即試用。 – 2012-03-27 17:18:39

+2

應該是:INSERT INTO dbo.metadata_type(name,publishable)... – 2012-03-27 17:22:26

0

,這裏是另一種方式來做到這一點

INSERT INTO dbo.metadata_type (name, publishable) 
SELECT 'Content Owner', 0 
UNION ALL 
SELECT 'Content Coordinator', 0 
UNION ALL