45

SQL データベースにあるユーザー ログ テーブルの場合、レポート リクエストからいくつかのパラメーターを追跡します。レポートでは複数の ID を渡すことができ、それらすべてをデータベース列の 1 つの列に格納します。これが正規化されたデータのセットである場合、これには間違いなく追加のテーブル設定がありますが、これは継承されたものです...

2 つ以上の ID が渡されたレポートが実行された回数を簡単に数えるよう求められました。すべてのレポートにコンマが含まれているため、複数のレポートが要求されているレコードの数を簡単に取得できます。

次に行う必要があるのは、列にカンマが出現する回数を数えることです。SQLでこれをどのように行いますか?

--count the number of times more than 1 report was requested in the record
select 
    count(*) as cnt
from
    [table]
where
    RequestedReportParams Like '%,%'
4

2 に答える 2

116
SELECT LEN(RequestedReportParams) - LEN(REPLACE(RequestedReportParams, ',', ''))
FROM YourTable
WHERE .....

これは、列の長さとコンマを削除した値の長さを単純に比較して、違い (つまり、コンマの数) を示します。

于 2009-07-17T15:58:16.017 に答える
8

あなたが尋ねられた質問に答えるには、次のようにするのが手っ取り早いと思われます。

select 
    count(*) as cnt
FROM 
    [table]
WHERE 
    RequestedReportParams Like '%,%,%'
于 2009-07-17T16:00:06.387 に答える