如何在SQL的类似表达式中使用多个字符串

姆贾兹达尼

我有20个(或更多)单词(字符串)的列表,想要选择在其列的3个中包含这些单词的行。我应该使用likesql的表达式。但我不知道如何在类似的表达式中使用多个字符串。(我现在使用它union,但是我至少有60条select语句,并认为它降低了性能,真的降低了性能吗?)

        //get the advertise that have similar keywords
        foreach (string str in keywords)
        {
            if (str != "")
            {
                if (!string.IsNullOrEmpty(sqlQuery)) sqlQuery += " union";
                sqlQuery = "select * from AD_Advertise where (AdKeyWords like N'%" + str + "%'"
                    + " OR AdTitle like N'%" + str + "%' "
                    + " OR AdDescription like N'%" + str + "%' "
                    + " OR AdGroupItemCode=" + adinfo.AdGroupItemCode + ")"
                    + " AND AdSiteID=" + CMSContext.CurrentSiteID
                    + " AND AdShow='True' "
                    + " AND ItemID != " + ADId;
            }
        }

        ds = cn.ExecuteQuery(sqlQuery,null);//("AD.Advertise.selectall", null, where, "ItemModifiedWhen");

回答:

最后,我使用了以下代码:

 if object_id('tempdb..#WordList') is not null
    drop table #WordList
 CREATE TABLE #WordList ( KeyWord nvarchar(100))
 insert into #WordList values (N'حقوقی'),(N'وکیل');

 SELECT DISTINCT *
 FROM AD_ADvertise a
     LEFT JOIN #WordList k 
     ON a.AdKeywords LIKE '%' + k.KeyWord + '%' 
     OR  a.AdTitle LIKE '%' + k.KeyWord + '%' 
     OR a.AdDescription LIKE '%' + k.KeyWord + '%'
 WHERE
    (k.KeyWord IS NOT NULL OR a.AdGroupItemCode = @AdGroupItemCode)
    AND a.AdSiteId = @AdSiteId
    AND a.AdShow = 'True'
    AND a.ItemId != @ItemId
;drop table #WordList
詹姆斯·S

创建一个具有表值参数的存储过程,该参数采用您的字符串列表。

在表值参数和您的表AD_Advertise之间建立联接。

以下是表格类型和存储过程的操作方法:

CREATE TYPE WordList AS TABLE (Word NVARCHAR(50));
GO

CREATE PROCEDURE GetAddsMatchingKeywords
    @KeywordList WordList READONLY,
    @AdGroupItemCode VARCHAR(50),
    @AdSiteId INT,
    @ItemId INT
AS
    SELECT DISTINCT
        a.AdTitle, 
        a.ItemId -- extend to the full column list
    FROM AD_ADvertise a
        LEFT JOIN @KeywordList k ON a.AdKeywords LIKE '%' + k.Word + '%' OR  a.AdTitle LIKE '%' + k.Word + '%' OR a.AdDescription LIKE '%' + k.Word + '%'
    WHERE
        (k.Word IS NOT NULL OR a.AdGroupItemCode = @AdGroupItemCode)
        AND a.AdSiteId = @AdSiteId
        AND a.AdShow = 'True'
        AND a.ItemId = @ItemId

GO

编辑-误读了原始问题-以为您想匹配3个或更多的单词。此版本与3列中任何一个单词都相同的单词相匹配-就像您想的那样。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Linux中使用SED正则表达式从一行中提取多个字符串并将其写入文件?

来自分类Dev

如何使用正则表达式提取多个字符串?

来自分类Dev

如何使用单个正则表达式模式定位多个字符串

来自分类Dev

如何使用正则表达式匹配多个字符串?

来自分类Dev

如何使用正则表达式从另一个字符串的开头删除多个字符串

来自分类Dev

使用正则表达式在多个文件中计算多个字符串

来自分类Dev

如何在Python中用正则表达式匹配和替换多个字符串

来自分类Dev

如何使用正则表达式将多个匹配项作为单个字符串获取

来自分类Dev

ng-show表达式:使用||比较多个字符串

来自分类Dev

使用正则表达式按照特定模式提取多个字符串

来自分类Dev

使用GREP和正则表达式搜索多个字符串

来自分类Dev

如何在python中使用正则表达式替换字符串的多个单词?

来自分类Dev

如何在两个字符串之间使用正则表达式匹配并查找原始文件,并获取两个字符串之间的整个字符串?

来自分类Dev

使用正则表达式将字符串拆分为多个字符串

来自分类Dev

使用正则表达式在Android中将字符串拆分为多个字符串

来自分类Dev

使用正则表达式将字符串拆分为多个字符串

来自分类Dev

如何在 Spark SQL 表达式中使用字符串变量?

来自分类Dev

如何在Python后置断言正则表达式(?<= \\)中使用'\'来匹配类似C ++的引号字符串

来自分类Dev

如何使用正则表达式拆分2个字符串?

来自分类Dev

如何在JXPath表达式中使用字符串的子字符串

来自分类Dev

如何用正则表达式匹配字符串中的一个或多个字符?

来自分类Dev

多个正则表达式替换,会创建多个字符串吗?

来自分类Dev

在嵌套文件/目录中使用正则表达式在一行中搜索多个字符串,并输出匹配的结果

来自分类Dev

如何在Excel中使用IF函数基于多个条件选择多个字符串

来自分类Dev

在Java中使用正则表达式多次匹配一个字符串

来自分类Dev

在python中使用正则表达式在行中找到两个字符串

来自分类Dev

使用正则表达式查找多个字符串的第一个实例

来自分类Dev

使用正则表达式查找两个字符串之间的多个匹配项

来自分类Dev

如果字符串是特殊字符,如何在python中使用正则表达式删除它的第一个和最后一个字符

Related 相关文章

  1. 1

    如何在Linux中使用SED正则表达式从一行中提取多个字符串并将其写入文件?

  2. 2

    如何使用正则表达式提取多个字符串?

  3. 3

    如何使用单个正则表达式模式定位多个字符串

  4. 4

    如何使用正则表达式匹配多个字符串?

  5. 5

    如何使用正则表达式从另一个字符串的开头删除多个字符串

  6. 6

    使用正则表达式在多个文件中计算多个字符串

  7. 7

    如何在Python中用正则表达式匹配和替换多个字符串

  8. 8

    如何使用正则表达式将多个匹配项作为单个字符串获取

  9. 9

    ng-show表达式:使用||比较多个字符串

  10. 10

    使用正则表达式按照特定模式提取多个字符串

  11. 11

    使用GREP和正则表达式搜索多个字符串

  12. 12

    如何在python中使用正则表达式替换字符串的多个单词?

  13. 13

    如何在两个字符串之间使用正则表达式匹配并查找原始文件,并获取两个字符串之间的整个字符串?

  14. 14

    使用正则表达式将字符串拆分为多个字符串

  15. 15

    使用正则表达式在Android中将字符串拆分为多个字符串

  16. 16

    使用正则表达式将字符串拆分为多个字符串

  17. 17

    如何在 Spark SQL 表达式中使用字符串变量?

  18. 18

    如何在Python后置断言正则表达式(?<= \\)中使用'\'来匹配类似C ++的引号字符串

  19. 19

    如何使用正则表达式拆分2个字符串?

  20. 20

    如何在JXPath表达式中使用字符串的子字符串

  21. 21

    如何用正则表达式匹配字符串中的一个或多个字符?

  22. 22

    多个正则表达式替换,会创建多个字符串吗?

  23. 23

    在嵌套文件/目录中使用正则表达式在一行中搜索多个字符串,并输出匹配的结果

  24. 24

    如何在Excel中使用IF函数基于多个条件选择多个字符串

  25. 25

    在Java中使用正则表达式多次匹配一个字符串

  26. 26

    在python中使用正则表达式在行中找到两个字符串

  27. 27

    使用正则表达式查找多个字符串的第一个实例

  28. 28

    使用正则表达式查找两个字符串之间的多个匹配项

  29. 29

    如果字符串是特殊字符,如何在python中使用正则表达式删除它的第一个和最后一个字符

热门标签

归档