为啥这个使用字符串连接的查询会在 SQL Server Compact Edition 中引发错误?
Posted
技术标签:
【中文标题】为啥这个使用字符串连接的查询会在 SQL Server Compact Edition 中引发错误?【英文标题】:Why does this query that uses string concatention throw an error in SQL Server Compact Edition?为什么这个使用字符串连接的查询会在 SQL Server Compact Edition 中引发错误? 【发布时间】:2012-08-09 20:16:11 【问题描述】:我正在使用 SQL Server Compact Edition。我有一张简单的桌子:
CREATE TABLE people (
ident NCHAR(7) NOT NULL UNIQUE,
first_name NVARCHAR(100) NOT NULL,
last_name NVARCHAR(100) NOT NULL,
notes NVARCHAR(4000) NULL,
birth_year SMALLINT NULL,
birth_location NVARCHAR(200) NULL,
amount SMALLINT NULL,
location NCHAR(6) NOT NULL,
title_date INT NOT NULL,
num INT NOT NULL UNIQUE,
PRIMARY KEY (ident)
);
还有一个简单的插入语句:
INSERT INTO people (ident, first_name, last_name, notes, birth_year, birth_location, amount, location, title_date, num)
VALUES ('t1bbbee', 'Sam', 'Simpson', 'HKiONV6JGxKdd2qs5pQ3GGWlrSPRSfu19cJ6zyEn2qT1WHyv5N', 2007, 'N6fCeYVqJcjDov9DDmLfkpYtGs0WV4QeSVRaKm659lw52W21TX', 1143, 'YcbKbv', 19805274, 7735)
根据我对documentation 的阅读,一个简单的查询应该可以正常工作:
SELECT p.ident + "-" + p.first_name + " " + p.last_name AS "name"
FROM people AS p
ORDER BY p.ident
但是,这会在 Visual Studio 和 SQL Fiddle(后者使用 SQL Server,而不是 SQL Server CE)中返回错误:
列名 '-' 无效。:SELECT p.ident + "-" + p.first_name + " " + p.last_name AS "name" FROM people AS p ORDER BY p.ident
有什么问题?
【问题讨论】:
【参考方案1】:您使用的是双引号而不是单引号:
SELECT p.ident + '-' + p.first_name + ' ' + p.last_name name
FROM people AS p
ORDER BY p.ident
见SQL Fiddle
【讨论】:
以上是关于为啥这个使用字符串连接的查询会在 SQL Server Compact Edition 中引发错误?的主要内容,如果未能解决你的问题,请参考以下文章
SQL查询中左连接之后的所有连接是不是也必须是左连接?为啥或者为啥不?
为啥这个用于 CSV 文件上的 SQL 查询的 VBA 代码会间歇性地工作?