我在LIKE语句附近的sql查询中遇到了一个错误。我是否在大小写的WHEN子句中错误地格式化了LIKE子句?这是密码。
SELECT
substring (Cases.FileNumber,4,6) AS [FileNumber]
,Charge.ChargeCode
,Cases.BookedLastName
,Cases.BookedFirstName
,Cases.ArrestDate
,Cases.BookedDOB
,Cases.BookedAge
,Charge.OffenseToDate
,Cases.BookedRace
,Cases.BookedSex
,Charge.OffenseStreetAddress1
,Charge.OffenseCity
,Charge.OffenseState
,Charge.OffenseZipCode
,Charge.ChargeDescription
,(SELECT CASE
WHEN charge1.ChargeDescription LIKE N'%heroin%' THEN 'Heroin'
ELSE 'Not Heroin'
END
FROM tblCsCharge AS charge1
INNER JOIN tblCsCases AS cases1
ON charge1.FileNumber = cases1.FileNumber
WHERE
charge1.BookedLastName = cases1.BookedLastName
AND charge1.BookedLastName = cases1.BookedLastName
AND charge1.BookedDOB = Cases.BookedDOB
AND cases2.ChargeCode IN (N'579.015-001Y201735')) AS HeroinYN
FROM
tblCsCases AS Cases
INNER JOIN tblCsCharge AS Charge
ON Cases.FileNumber = Charge.FileNumber
WHERE Cases.IssuedDate >= 01/01/2017
AND
Cases.IssuedDate <= @EndDate
AND
Charge.ChargeCode IN (N'579.015-001Y201735')
AND
Cases.BookedLastName NOT IN (N'Bogus')
ORDER By
Cases.BookedLastName这是一个大型查询中的子查询,重点是构建一个列,该列将根据数据库中的一个大文本字段简单地输出海洛因或不输出海洛因。
编辑:
尽管对代码进行了修改,但现在发生了以下错误:无效的列名'BookedLastName‘。无效列名'BookedLastName‘。无效列名'BookedDOB‘。多部分标识符"cases2.ChargeCode“无法绑定。
发布于 2017-08-17 16:35:34
您的代码中有两个错误,这两个错误都指出了,但答案不同。
。
,(SELECT CASE--(charge1.ChargeDescription)
WHEN charge1.ChargeDescription LIKE N'%heroin%' THEN 'Heroin'
ELSE 'Not Heroin'
END
FROM tblCsCharge AS charge1
INNER JOIN tblCsCases AS cases1
ON charge1.FileNumber = cases1.FileNumber
WHERE
charge1.BookedLastName = cases1.BookedLastName
AND charge1.BookedLastName = cases1.BookedLastName
AND charge1.BookedDOB = Cases.BookedDOB
AND cases2.ChargeCode IN (N'579.015-001Y201735')) AS HeroinYN发布于 2017-08-17 16:29:44
这似乎就是问题所在..。
AND cases2.ChargeCode IN (N'579.015-001Y201735') AS HeroinYN
因为这是子查询的一部分,所以需要另一个括号
AND cases2.ChargeCode IN (N'579.015-001Y201735')) AS HeroinYN
也是
在使用相等运算符时,不能将列名放在CASE语句之后。
这是可以接受的
select
case columnName
when 'X' then 1
when 'Y' then 0
end这不是
select
case columnName
when = 'X' then 1
when columnName like '%Y%' then 0
end修正脚本
,(SELECT CASE
WHEN charge1.ChargeDescription LIKE N'%heroin%' THEN 'Heroin'
ELSE 'Not Heroin'
END
FROM tblCsCharge AS charge1
INNER JOIN tblCsCases AS cases1
ON charge1.FileNumber = cases1.FileNumber
WHERE
charge1.BookedLastName = cases1.BookedLastName
AND charge1.BookedLastName = cases1.BookedLastName
AND charge1.BookedDOB = Cases.BookedDOB
AND cases2.ChargeCode IN (N'579.015-001Y201735')) AS HeroinYN发布于 2017-08-17 16:29:44
正确的语法是:
CASE
WHEN charge1.ChargeDescription LIKE N'%heroin%' THEN 'Heroin'
ELSE 'Not Heroin'
END不要在这个语法中将字段名放在CASE后面。
https://stackoverflow.com/questions/45740478
复制相似问题