SQL包含的子句

时间:2017-01-27 23:16:37

标签: sql-server

我正在使用NopCommerce 3.5并尝试修改SQL存储过程以便能够搜索SKU

我的问题是如何获取以下SQL以检查列值是否也包含在关键字中?

--SKU
    IF @SearchSku = 1
    BEGIN
        SET @sql = @sql + '
        UNION
        SELECT p.Id
        FROM Product p with (NOLOCK)
        WHERE '
        IF @UseFullTextSearch = 1
            SET @sql = @sql + '(CONTAINS(p.[Sku], @Keywords) OR CONTAINS(@Keywords, p.[Sku])) '
        ELSE
            SET @sql = @sql + '(PATINDEX(@Keywords, p.[Sku]) > 0 OR PATINDEX(p.[Sku], @Keywords) > 0) '
    END

2 个答案:

答案 0 :(得分:1)

尝试使用通配符包装p.sku。例如patindex('%' + p.[sku] + '%', @keywords)

答案 1 :(得分:0)

Xedni上面的评论有助于解决我的问题。将SQL语句更改为以下内容。

--SKU
    IF @SearchSku = 1
    BEGIN
        SET @sql = @sql + '
        UNION
        SELECT p.Id
        FROM Product p with (NOLOCK)
        WHERE '
        IF @UseFullTextSearch = 1
            SET @sql = @sql + '(CONTAINS(p.[Sku], @Keywords) OR CONTAINS(@Keywords, ''%'' + p.[Sku] + ''%'')) '
        ELSE
            SET @sql = @sql + '(PATINDEX(@Keywords, p.[Sku]) > 0 OR PATINDEX(''%'' + p.[Sku] + ''%'', @Keywords) > 0) '
    END