如果列为= 1,则添加到CONCAT()

时间:2016-12-08 19:15:24

标签: mysql sql

我试图获取一个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是变量

1 个答案:

答案 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" (带领先空间)。如果没有,那么用空字符串连接。