如何找到像图案的最小量,以满足字符串列表
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', ...)
另一答案
- 好吧,让我们说你有在Excel中该数据从A2单元格开始
- 在小区C1写这样的代码:
create table ##TEMP(STRS varchar(20))
- 在C2单元格写这样的代码:
="insert into ##TEMP"&" values"&" ('"&A2&"' )"&","
- 在小区C3写这样的代码:
=" ('"&A3&"'
)“和”,” - 现在按Ctrl + C式中的小区C3,并将其粘贴在范围C4-C13
- 现在,你的Excel这样的
- 复制范围C1-C13的代码,打开SQL Management Studio中贴吧,删除最后一个逗号(在这种情况下,小区C13有逗号你要删除它成功的SQL运行结束),并运行,现在你有
##temp
表。 - 与你的表所示
INNER JOIN
它SELECT * FROM MYTABLE M INNER JOIN ##TEMP AS T ON T.STRS = M.COLUMN_NAME_STR
你应该得到你需要的数据,希望它帮助。
以上是关于如何找到像图案的最小量,以满足字符串列表的主要内容,如果未能解决你的问题,请参考以下文章
python中,如何将字符串中的多个不等量空格改为改为逗号分隔?