Left join ON not null 列不能 select not null column

Left join ON not null columns can't select not null column

每个 table 都有一个 RECNUM 列。它们是(十进制(28,0),不为空)。那就是我加入的地方。我想 select CAUNIT 中的 DESC 列。它是(varchar(28,0),不为空)。当我 运行 我的查询时,我得到:

消息 156,级别 15,状态 1,第 1 行 关键字 'DESC' 附近的语法不正确。以下是我的查询:

SELECT CDCLSVC.UNIT_ID,CAUNIT.DESC
FROM CDCLSVC
LEFT JOIN CAUNIT
ON CDCLSVC.RECNUM = CAUNIT.RECNUM

问题出在 DESC 列。在 SQL Server 中是 reserved keyword:

Microsoft SQL Server uses reserved keywords for defining, manipulating, and accessing databases. Reserved keywords are part of the grammar of the Transact-SQL language that is used by SQL Server to parse and understand Transact-SQL statements and batches. Although it is syntactically possible to use SQL Server reserved keywords as identifiers and object names in Transact-SQL scripts, you can do this only by using delimited identifiers.

可能的解决方案:

  1. 重命名列,例如description
  2. 引用[]

您也可以使用别名来避免键入完整的 table 名称:

SELECT cd.UNIT_ID,ca.[DESC]
FROM CDCLSVC cd 
LEFT JOIN CAUNIT ca
ON cd.RECNUM = ca.RECNUM