2

このクエリがあります

SELECT 
    COUNT(
            CASE 
                WHEN restricted LIKE '%us%' THEN 2 
                ELSE 1 
            END) AS totalcount 
FROM 
    reviews 
WHERE 
    restricted LIKE '%us%'

これは、列に表示される「us」のような値の合計数をカウントします (制限あり)。この列は、この「異常な」方法で複数選択チェックボックスからの値で埋められます。

*us*ca*uk*など

そして、これは機能します。問題ない。

ここで、この値 (us) が表示されていない場所をカウントする必要があります。私はこれを「クラシック」にしようとしました。

SELECT 
    COUNT(
            CASE 
                WHEN restricted NOT LIKE '%us%' THEN 2 
                ELSE 1 
            END
    ) AS totalcount 
FROM 
    reviews 
WHERE 
    restricted NOT LIKE '%us%'

私はステートメントを NOT LIKE と宣言しましたが、今... 問題があります... 「制限された」列が満たされていない行もカウントします (一部のリストではこの列を使用しません)。そして、カウントが間違っています。

誰でも助けてもらえますか?

4

4 に答える 4

1

これはどう?

SELECT 
    COUNT(*) AS totalcount 
FROM 
    reviews 
WHERE 
    restricted IS NOT NULL 
-- In case you expect restricted to contain spaces, the following line should be 
-- LTRIM(RTRIM(restricted)) != ''
AND restricted != '' 
AND restricted NOT LIKE '%us%'

これにより、restricted が null または空の行が除外されます。

于 2012-09-23T12:31:03.697 に答える
1

CASE ステートメントは必要ありません。WHERE 句は、ELSE がヒットしないことを意味します。

一致する「私たち」:

SELECT 
  COUNT(restricted) AS 'Count matching *us*' 
FROM 
  reviews 
WHERE 
  restricted IS NOT NULL 
  AND restricted LIKE '%us%'

「us」に一致しない (null を含む):

SELECT 
  COUNT(restricted) AS 'Count not matching *us*' 
FROM 
  reviews 
WHERE 
  restricted IS NULL 
  OR restricted NOT LIKE '%us%'
于 2012-09-23T13:05:06.620 に答える
0

「restricted」列の空の値または null 値は、「restricted NOT LIKE '%us%'」ステートメントを渡します。次のように変更してみてください:

SELECT 
    COUNT(
            CASE 
                WHEN restricted NOT LIKE '%us%' THEN 2 
                ELSE 1 
            END
    ) AS totalcount 
FROM 
    reviews 
WHERE 
    restricted NOT LIKE '%us%' 
    AND restricted != '' 
    AND restricted IS NOT NULL
于 2012-09-23T12:33:11.973 に答える
0
SELECT 
    COUNT(*) AS totalcount 
FROM 
    reviews 
WHERE 
    restricted IS NOT NULL 

スペースを含む制限があると予想される場合は、次の行を次のようにする必要があります。

LTRIM(RTRIM(restricted)) != ''
AND restricted != '' 
AND restricted NOT LIKE '%us%'
于 2014-12-08T09:02:06.473 に答える