web-dev-qa-db-ja.com

文字がSQL列に表示される回数をカウントする方法は?

SQLデータベースにあるユーザーロギングテーブルの場合、レポート要求からいくつかのパラメーターを追跡します。このレポートでは、複数のIDを渡すことができ、それらすべてをデータベース列の単一の列に保存します。これが正規化されたデータのセットである場合、このための追加のテーブル設定が確実にありますが、これは継承されたものです...

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 '%,%'
41
RSolberg
SELECT LEN(RequestedReportParams) - LEN(REPLACE(RequestedReportParams, ',', ''))
FROM YourTable
WHERE .....

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

102
AdaTheDev

あなたが尋ねられた質問に答える迅速で汚い方法は、これを行うことだと思われます:

select 
    count(*) as cnt
FROM 
    [table]
WHERE 
    RequestedReportParams Like '%,%,%'
7
mherren