【发布时间】:2019-10-21 20:18:27
【问题描述】:
我正在汇总错误以跟踪记录的错误总数。我目前正在尝试创建一个查询,以查找/分组几条具有相似值的记录,以便将它们记录为一个错误而不是几个单独的错误。唯一的区别是 id 或 2,这就是它们被分组的原因。数据库通过应用洞察和分析流从我们的系统中注入错误。我有一个包含“模板”错误的表,用于查找和分组这些特定错误。并非所有记录的错误都需要模板,因为它们被适当地分组,因为它们完全相同。当尝试使用 like 来查找错误时,似乎很难使用破折号。我很难找到信息来帮助我解决这个问题。我尝试使用替换来删除破折号,但这不起作用,因为错误太长了。
示例模板:
Auto Resubmit for % failed with ' Object reference not set to an instance of an object. '
示例错误:
Auto Resubmit for 004e9e2d-3704-4cfd-a90d-42520203df79 - 18723191 failed with ' Object reference not set to an instance of an object. '
Auto Resubmit for 0130e64e-64e6-4a23-88a4-51fba823705b - 18734821 failed with ' Object reference not set to an instance of an object. '
Auto Resubmit for 11809bf5672f4e98987119dbd06e5d78 - 17359076 failed with ' Object reference not set to an instance of an object. '
示例查询:
select top 1000 * from errorTable where error like 'Auto Resubmit for % failed with '' Object reference not set to an instance of an object.'
【问题讨论】:
-
请向我们展示您当前的查询,让我们知道它有什么问题。
-
现在,我只是想查找记录,所以查询没有什么特别之处。
-
如果将查询中的
%替换为表中存在的id,会返回对应的记录吗? -
把你的逻辑分成几部分。您无需尝试查找模板值,因为您无法神奇地替换/忽略占位符。您想要以“自动重新提交”开头的行。然后您想进一步过滤那些包含“对象引用未设置为对象实例”的行。试一试逻辑。
-
分解逻辑确实有效,但是,并非所有错误看起来都像我提供的这个特定错误。 id 和 guid 可以在消息中的任何位置。 (例如,itemid2 的自动重新提交 - 18137385 失败,出现“访问被拒绝:userId='12602174'”)要尝试分解它,我认为逻辑会有点复杂。
标签: sql-server azure-sql-database sql-like