【发布时间】:2011-04-07 19:22:42
【问题描述】:
问题:我有事件通过复合键到达。为了简化,假设关键是:
操作系统+主机名+一些细节
一些例子可能是:
WIN+SERVER1+DB+PAYWIN+SERVER2+CPU_HIGH
我们有多个团队可以使用 SQL 通配符字符串订阅这些内容。例如,Windows 管理员可能订阅WIN+%,DBA 可能订阅WIN+%+DB+%。
我们已经为我们自己的背部做了一根棒子,一开始就没有把它钉牢,但这是一个经典案例,先让它发挥作用,然后在可能的情况下让它更好地发挥作用。出于性能原因,我想尽量减少重叠订阅的数量。数据在 excel 和 MS SQL 表中。问题是虽然 SQL 服务器会同意
WIN+% 是 LIKE WIN+SERVER1+DB+PAY 它似乎不同意在 SQL SELECT 中 WIN+% 是 LIKE WIN+%+DB+%。我可以用谷歌搜索的大多数解决方案只允许在一侧使用通配符。
我想我可以通过在每个通配符处打破通配符比较的一侧(可能更复杂)来实现其中的一些。
例如WIN+%+DB+% 变为SELECT field WHERE field LIKE 'WIN+%" and field LIKE '%+DB+%'
这似乎很快就崩溃了,尽管我可能会列出可能的情况。
我正在研究一本关于正则表达式的书,并怀疑一旦我掌握了它们可能会派上用场。我在服务器上有一个公平的工具包,可以访问更多,所以我对大多数平台上的任何解决方案都持开放态度。
如果有人感兴趣 - 每场比赛都会产生一张门票,因此 2 场比赛将产生 2 张门票,他们可能不会交叉引用,从而导致额外的工作。这涉及多个数据中心,我们有数千个订阅 - 主要由“部分问题”“解决方案”自动生成。从好的方面来说,它可以让我继续工作。
【问题讨论】:
标签: sql string comparison wildcard