问题:我有使用复合键到达的事件。为简化起见,假设关键是:
OS +主机名+ somedetail
一些例子可能是:
WIN+SERVER1+DB+PAY
WIN+SERVER2+CPU_HIGH
我们有各种团队可以使用SQL通配字符串订阅这些团队。例如,Windows管理员可能订阅WIN+%
,而DBA可能订阅WIN+%+DB+%
。
我们已经为自己的背部制造了一根杆,但并没有在开始时将其固定下来,但这是一个经典的例子,它首先让它工作,然后让它在我们可以的时候更好地工作。出于性能原因,我希望尽量减少重叠订阅的数量。数据都在excel和MS SQL表中。问题是虽然SQL服务器会同意
WIN+%
LIKE WIN+SERVER1+DB+PAY
似乎不同意SQL WIN+%
中的LIKE WIN+%+DB+%
是SELECT
。我可以google的大部分解决方案只允许使用通配符。
我认为我可以通过在每个通配符中打破通配符比较的一侧(可能更复杂)来实现其中的一部分。
例如WIN+%+DB+%
变为SELECT field WHERE field LIKE 'WIN+%" and field LIKE '%+DB+%'
这似乎很快就会崩溃,尽管我可能会列出一些可能的案例。
我正在写一本关于正则表达式的书,并怀疑一旦我获得更好的抓地力它们可能会有用。我在服务器上有一个公平的工具包,可以访问更多,所以我可以在大多数平台上使用任何解决方案。
如果有人感兴趣 - 每场比赛产生一张票,那么2场比赛将产生2张票,他们可能不会交叉推荐引起额外的工作。这涉及多个数据中心,我们有数千个订阅 - 主要由“部分问题”“解决方案”自动生成。从好的方面来说,它让我继续工作。
答案 0 :(得分:1)
我有2条建议:
a)考虑将大订阅字符串分解为各自的部分。所以最后有3列:OS,HOSTNAME和DETAIL。然后,您可以查询... FROM SUBSCRIPTIONS WHERE event LIKE OS||'%' AND event LIKE '%'||HOST||'%' AND event LIKE '%'||DETAIL
。