SQL CASE我如何正确分配值?



首先,我想说的是,在提出这个问题之前,我已经花了我应有的时间和勤奋,通过观看视频,使用其他来源,阅读其他帖子和soff的答案,但仍然无法找到解决方案。

我遇到的问题,在一个特定的情况下,是一个特定的类型正在传递,这将需要使用LIKE作为特定类型本身将不匹配任何东西,因为三种类型使用一种类型,在这种情况下说"绘画"。数据库中有"画小"one_answers"画大"。

代码
// I tried this
CASE WHEN type = 'painting' THEN inventory.type LIKE '%'+type+'%' ELSE inventory.type = type END

我一直遇到"在期望条件的上下文中指定的非布尔类型的表达式。还有一些其他的变化,我已经尝试以及IF ELSE,然而,我遇到了同样的问题。别人也许能把这个问题说得更好。

我主要是想被指出正确的方向,并得到澄清我做错了什么。

谢谢

您的查询有几个问题。而不是CASE表达式本身,我将解决不太明显的问题,您缺少前缀。以这个子句为例:

inventory.type LIKE '%'+type+'%'

这可能是由于列名不明确而导致的错误,或者解析为inventory.type LIKE '%'+inventory.type+'%';显然,后者总是为真,除非列type的值为NULL。总是在列名前加上前缀,特别是当您的查询包含2个以上的表时。

对于实际问题,这可能是WHERE的一部分,因此使用ORAND逻辑:

WHERE (({Other Table Prefix}.[type] = 'painting' AND inventory.[type] LIKE '%' + {Other Table Prefix}.[Type] + '%')
OR  ({Other Table Prefix}.[type] != 'painting' AND inventory.[type] = {Other Table Prefix}.[Type]))

显然,您需要用正确的前缀适当地替换{Other Table Prefix}

问题似乎出在

LIKE '%'+type+'%' 

LIKE可以返回一个布尔值。

相关内容

  • 没有找到相关文章

最新更新