【DM版本】:DM7
【问题描述】*:
有一段查询sql,在where条件后使用了if函数,但是sql执行报错,以下是查询的相关sql:
WHERE
IF
('CT伏安特性测试仪' = '其他分类',
"instrument_category"."category_type" = '其分类',
"instrument_category"."category_name" LIKE CONCAT( CONCAT( '%', 'CT伏安特性测试仪' ), '%' ))
支持时会报错: [=]附近出现错误
说明: 'CT伏安特性测试仪' 在执行时是参数化的.
但是IF函数的使用,又是支持的:
select IF(false,'1',concat(1,2,3));
请求帮助:
如何使用IF函数,使得上述where条件后使用,SQL能够正常执行.
尝试使用 CASE ,但是也是执行失败:
SELECT *
FROM "ProjectReserve"
INNER JOIN "instrument_category" ON "ProjectReserve"."category_id" = "instrument_category"."id"
WHERE
(CASE
WHEN 'CT伏安特性测试仪' = '其他分类' < 100 THEN "instrument_category"."category_type" = '其分类'
ELSE "instrument_category"."category_name" LIKE CONCAT('%', 'CT伏安特性测试仪', '%')
END;)
WHERE
CASE
WHEN 'CT伏安特性测试仪' = '其他分类' THEN
instrument_category.category_type = '其分类'
ELSE
instrument_category.category_name LIKE '%' || 'CT伏安特性测试仪' || '%'
END;
这样是否可以?