如何找到像图案的最小量,以满足字符串列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何找到像图案的最小量,以满足字符串列表相关的知识,希望对你有一定的参考价值。

因此,可以说我有一个Excel文件,该字符串列表:

33000
33100
33010
33110
45050
45150
45250
45350
45360
45370
55360
55370

我已经得到了具有串并在此列表的详细SQL表,我想使仅搜索字符串此列表中的SELECT语句。

我可以做一个强力的语句像SELECT * FROM Table WHERE field = '33100' OR field = '33010' ...。不过,我可以使WHERE列表使用LIKE语句更小。

我试图找到一种方法,使LIKE语句的数量尽可能少,所以我需要生成的SQL模式的最低金额,以确定整个列表。对于上面的列表中的SQL模式最少会是这样:

33[01][01]0
45[0123]50
[45]53[67]0

我怎么会产生这样的动态,其中输入字符串列表模式列表?

答案

另一种方法可能会更“优雅”,但它不会更快。你的字符串与不同的字符开始,所以like模式的第一部分将是一个通配符或字符范围 - 排除有效使用索引的。

一个简单的in表达,在另一方面,可以使用索引:

where col in ('33100', '33010', '33110', '45050', ...)
另一答案
  1. 好吧,让我们说你有在Excel中该数据从A2单元格开始
  2. 在小区C1写这样的代码:create table ##TEMP(STRS varchar(20))
  3. 在C2单元格写这样的代码:="insert into ##TEMP"&" values"&" ('"&A2&"' )"&","
  4. 在小区C3写这样的代码:=" ('"&A3&"')“和”,”
  5. 现在按Ctrl + C式中的小区C3,并将其粘贴在范围C4-C13

enter image description here

  1. 现在,你的Excel这样的

enter image description here

  1. 复制范围C1-C13的代码,打开SQL Management Studio中贴吧,删除最后一个逗号(在这种情况下,小区C13有逗号你要删除它成功的SQL运行结束),并运行,现在你有##temp表。
  2. 与你的表所示INNER JOINSELECT * FROM MYTABLE M INNER JOIN ##TEMP AS T ON T.STRS = M.COLUMN_NAME_STR

你应该得到你需要的数据,希望它帮助。

以上是关于如何找到像图案的最小量,以满足字符串列表的主要内容,如果未能解决你的问题,请参考以下文章

在python中跨多个列表查找列的最小值

python中,如何将字符串中的多个不等量空格改为改为逗号分隔?

在 Seq 中找到满足条件 X 的第一个元素

用python编写脚本程序,实现用户输入3个整数,放入列表,并输出最小值

元组列表(字符串,浮点数)与 NaN 如何获得最小值?

如何将字符串的多个部分放入列表中?