首先,我想说,我已经花了应有的时间和勤奋对我的一部分,通过观看视频,使用其他来源,并阅读其他职位和答案的SOF之前,问这个问题,并已无法找到一个解决方案。
我遇到的问题是,在一个特定的情况下,传入了一个特定的类型,这将需要使用LIKE,因为该特定类型本身将不匹配任何内容,因为三个类型使用一个类型,在这种情况下说'painting'。数据库有'painting small'和'painting large'。
编码
// I tried this
CASE WHEN type = 'painting' THEN inventory.type LIKE '%'+type+'%' ELSE inventory.type = type END
我不断遇到“在需要条件的上下文中指定的非布尔类型的表达式。我尝试过IF ELSE的一些其他变体,但是,我遇到了同样的问题。其他人可能会更好地表达这个问题。
我主要是想被指向正确的方向,并得到关于我做错了什么的澄清。
谢谢你
2条答案
按热度按时间kmb7vmvb1#
你的查询有几个问题。我将解决一个不太明显的问题,而不是
CASE
表达式本身,你缺少前缀。以下面的子句为例:这可能是由于列名不明确而导致的错误,也可能是解析为
inventory.type LIKE '%'+inventory.type+'%'
。显然,后者 * 总是 * 为真,除非列type
的值为NULL
。总是为列名添加前缀,特别是当查询包含2个以上的表时。至于实际问题,这大概是
WHERE
的一部分,因此使用OR
和AND
逻辑:显然,您需要用正确的前缀适当地替换
{Other Table Prefix}
。ldfqzlk82#
问题似乎出在
其中LIKE可能返回布尔值。