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]);'

ビューに使用できるクエリの形式でこれを実行するにはどうすればよいですか?SQLの正規表現をいじって少し読んでみPatIndexましたが、両方で行き詰まりに陥っています。

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 に答える