我正在尝试在日志表上创建一个视图。很多日志来自"潜在的危险形式请求"虽然我有兴趣捕获它们,但它们也会产生很多噪音,所以我想要一个视图过滤掉它们。日志记录来自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]);'
如何以可用于View的查询形式完成此操作?我尝试过使用PatIndex
并在SQL中阅读一些关于Regex的内容,但是我在两者中都遇到了死胡同。
答案 0 :(得分: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 + ')'
答案 1 :(得分:0)
TSQL的通配符是%符号。试试这个:
WHERE logComment NOT LIKE 'At % (Referred by: http://www.mydomain.com%);'