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

时间:2012-04-17 22:08:07

标签: sql sql-server-2008

这适用于SQL-Server 2008.这是一个示例列:

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

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

4 个答案:

答案 0 :(得分:5)

SELECT strings, COUNT(*) As Appearances 
FROM tbl
WHERE strings NOT IN('string1', 'string2', 'string3')
GROUP BY strings

答案 1 :(得分:2)

不清楚你想要什么
  

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

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

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

See it working here

如果您希望每个字符串的实例数不是'string1','string2','string3',那么您需要添加group by strings之类的{{1}} }}

答案 2 :(得分:1)

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

SELECT strings, COUNT(strings)
FROM table_name
WHERE strings <> 'string1'
GROUP BY strings

答案 3 :(得分: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;