1

我正在尝试在日志表上创建一个视图。很多日志来自“潜在危险的表单请求”,虽然我有兴趣捕获这些日志,但它们也会产生很多噪音,所以我希望有一个可以过滤掉它们的视图。日志记录来自 CMS,因此我无法修改其逻辑。

我想过滤掉的日志条目总是采用以下格式

At /contact-us.aspx (Referred by: http://www.mydomain.com/contact-us.aspx): 
At /login.aspx (Referred by: http://www.mydomain.com/login.aspx): 

所以基本上我想要一个where条款,我可以说一些事情

where logComment <> 'At [url] (Referred by: http://www.mydomain.com[url]);'

如何以可用于视图的查询的形式完成此操作?我曾尝试PatIndex在 SQL 中玩弄并阅读一些关于 Regex 的信息,但我在这两种方法中都遇到了死胡同。

4

2 回答 2

4

这应该返回与模式'At % (Referred%'完全不匹配或与问题中指定的模式不匹配的任何内容。

WITH Log(logComment)
     AS (SELECT 'At /contact-us.aspx (Referred by: http://www.mydomain.com/contact-us.aspx)'
         UNION ALL
         SELECT 'At /login.aspx (Referred by: http://www.mydomain.com/login.aspx)'
         UNION ALL
         SELECT 'FOOBAR')
SELECT logComment
FROM   Log
       CROSS APPLY (SELECT 
                    CASE
                    WHEN logComment LIKE 'At % (Referred%' 
                    THEN SUBSTRING(logComment, 4, CHARINDEX('(Referred', logComment) - 5)
                    END) C(url)
WHERE  url IS NULL
        OR logComment <> 'At ' + url + ' (Referred by: http://www.mydomain.com' + url + ')' 
于 2013-02-26T16:57:13.700 回答
0

TSQL 的通配符是 % 符号。尝试这个:

WHERE logComment NOT LIKE 'At % (Referred by: http://www.mydomain.com%);'
于 2013-02-26T16:41:55.837 回答