3

訪問者のuser_agent情報を MS-SQL データベースに保存しました。各行には、次の通常の形式があります。

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; F-6.0SP2-20041109; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; AskTbORJ/5.14.1.20007)

ブラウザ情報をフィルタリングして表示することはできますか? 文字列に含まれる場合%MSIE 8.0%は IE8 として出力し、含まれる場合は%Firefox%Firefox などとして出力します。

私はどこでも検索しましたが、助けが見つかりません。

4

2 に答える 2

2

より多くの種類のブラウザー、または GoogleBot などのボットの処理コードを追加することで、この関数を改善できます。T-SQL 関数: UserAgent を解析してブラウザー名を抽出する方法

Internet Explorer のように、通常のフレーズ MSIE 6.0 または MSIE 8.0 の存在を探すだけの非常に簡単な場合もあります。しかし、他のブラウザーでは、これは簡単ではありません。そのため、ブラウザーごとに異なる抽出手法を使用して、適切なブラウザー名とバージョンを抽出する必要があります。

TSQL 関数は次のようになります。

   CREATE FUNCTION [dbo].[GetBrowserName](@UserAgent VARCHAR(200))
   RETURNS VARCHAR(30)
   AS
   BEGIN
   DECLARE @BrowserName VARCHAR(30)
   SET @BrowserName = CASE
          WHEN PATINDEX('%MSIE 8.0%',@UserAgent) > 0
                 THEN 'Internet Explorer 8.0'
          WHEN PATINDEX('%MSIE 7.0%',@UserAgent) > 0
                 THEN 'Internet Explorer 7.0'
          WHEN PATINDEX('%MSIE 6.0%',@UserAgent) > 0
                 THEN 'Internet Explorer 6.0'
          WHEN PATINDEX('%MSIE 5.0%',@UserAgent) > 0
                 THEN 'Internet Explorer 5.0'
          WHEN PATINDEX('%Firefox%',@UserAgent) > 0
                 THEN 'Mozilla ' + REPLACE(SUBSTRING(@UserAgent,
                       PATINDEX('%Firefox%',@UserAgent), 100),'/', ' ') 
          WHEN PATINDEX('%Chrome%',@UserAgent) > 0
                 THEN 'Google ' + REPLACE(SUBSTRING(@UserAgent,
                       PATINDEX('%Chrome%',@UserAgent), 
                              PATINDEX('%Safari%',@UserAgent) -
                                     PATINDEX('%Chrome%',@UserAgent)),'/', ' ') 
          WHEN PATINDEX('%Safari%',@UserAgent) > 0
                 THEN 'Safari ' + REPLACE(SUBSTRING(@UserAgent,
                       PATINDEX('%Version%',@UserAgent),
                              PATINDEX('%Safari%',@UserAgent)-
                                     PATINDEX('%Version%',@UserAgent)),'Version/', '')
          WHEN PATINDEX('%Opera%',@UserAgent) > 0
                 THEN REPLACE(SUBSTRING(@UserAgent,
                       PATINDEX('%Opera%',@UserAgent),
                              PATINDEX('%(%',@UserAgent)-2),'/', ' ')
          ELSE
                 'Unknown Browser'
          END
   RETURN(@BrowserName)
   END
于 2012-11-28T21:51:08.710 に答える
2

式を使用してCASEそれを処理できます。

SELECT CASE 
    WHEN user_agent LIKE '%MSIE 8.0%' THEN 'IE8'
    WHEN user_agent LIKE '%Firefox%' THEN 'Firefox'
    ELSE 'There are other browsers?'
    END AS Browser
FROM YourTable
于 2012-10-15T18:40:20.900 に答える