为啥这个使用字符串连接的查询会在 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 代码会间歇性地工作?

为啥我在连接 Firebase 时会在 Arduino 中遇到这个问题?

为啥我的 SQL 查询在 MySQL 工作台中失败?

为啥这个 PL/SQL 查询不使用 ODP.NET 执行