1

这是针对 SQL-Server 2008 的。这是一个示例列:

-----------------
|    strings    |
-----------------
|    string1    |
-----------------
|    string2    |
-----------------
|    string3    |
-----------------
|    string4    |
-----------------
|      ...      |
-----------------

计算任何不是“string1”、“string2”或“string3”的字符串出现次数的查询是什么?

4

4 回答 4

5
SELECT strings, COUNT(*) As Appearances 
FROM tbl
WHERE strings NOT IN('string1', 'string2', 'string3')
GROUP BY strings
于 2012-04-17T22:11:33.380 回答
2

它不清楚你想要什么

计算不是“string1”、“string2”或“string3”的任何字符串的出现次数?

如果你想要不是'string1','string2','string3'的字符串数量,那么你只想要

SELECT COUNT(*) 
FROM Table1
WHERE strings NOT IN('string1', 'string2', 'string3')

看到它在这里工作

如果您想要每个字符串的实例数不是“string1”、“string2”、“string3”,那么您需要添加一个group by strings类似Magnus 的答案

于 2012-04-17T22:18:18.083 回答
1

这将产生一个包含两列的结果,第一列将包含字符串,第二列将包含该字符串的计数。使用 where 子句过滤掉不需要的字符串。

SELECT strings, COUNT(strings)
FROM table_name
WHERE strings <> 'string1'
GROUP BY strings
于 2012-04-17T22:09:38.360 回答
0

使用关系差分运算符,EXCEPT例如

WITH strings
     AS
     (
      SELECT * 
        FROM (
              VALUES ( 'string1' ), 
                     ( 'string2' ), 
                     ( 'string3' ), 
                     ( 'string4' )
             ) AS T ( string )
     )
SELECT text_value 
  FROM YourTable
EXCEPT
SELECT string
  FROM strings;
于 2012-04-18T07:52:54.120 回答