我试图获取一个SQL查询,只有当FreeShipping
字段中有'1'时才将“FreeShipping”连接到一个字符串
这是我当前的SQL,但我不知道如何使用IF语句并添加concat()
函数
我是否可以在两个concat()
函数之间进行if选择?
SELECT
`Id`
FROM
`product_products` as pp
WHERE
CONCAT(
`Id`,
' ',
(SELECT `Name` FROM `product_brands` WHERE `Id` = pp.BrandId),
' ',
`ModelNumber`,
' ',
`Title`
)
LIKE :SearchStr AND isActive = 1;
预期结果只是产品ID,我想通过搜索“FreeShipping”来选择产品
:SearchStr
是变量
答案 0 :(得分:1)
假设您使用该连接字符串进行过滤,您可以执行以下操作:
SELECT
`Id`
FROM
`product_products` as pp
WHERE
CONCAT(
`Id`,
' ',
(SELECT `Name` FROM `product_brands` WHERE `Id` = pp.BrandId),
' ',
`ModelNumber`,
' ',
`Title`,
IF(`FreeShipping` = 1, " FreeShipping", "")
)
LIKE :SearchStr AND isActive = 1;
如果FreeShipping = 1
然后结束" FreeShipping" (带领先空间)。如果没有,那么用空字符串连接。