postgresql 一个字段多个值的查询sql怎么写

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了postgresql 一个字段多个值的查询sql怎么写相关的知识,希望对你有一定的参考价值。

例如一个表的字段area中,可以有多个值(varchar类型)“1000,2000,3000,4000” 查询这个表中字段中包含2000的的所有数据,的sql语句怎么写

参考技术A select * from area where 字段 like ‘%2000%’追问

非常感谢您的解答,但是这样写有个问题,比如有两条数据的area字段的值分别为“1000,20”“1000,2000,3000,4000”,查询语句写:select * from area where area like ‘%20%’ 会把2条数据都select出来,请问怎么解决呢??

本回答被提问者采纳

T-SQL计算具有特定值的行(在一个查询中多个)

我需要一些T-SQL查询的帮助。我想计算具有特殊值的字段(例如> 1)。

假设我有一个像这样的表:

IGrp | Item | Value1 | Value2
#############################
A    | I11  | 0.52   | 1.18
A    | I12  | 1.30   | 0.54
A    | I21  | 0.49   | 2.37
B    | I22  | 2.16   | 1.12
B    | I31  | 1.50   | 0.28

我想得到一个结果:

IGrp | V1High | V2High 
######################
A    | 1      | 2
B    | 2      | 1

在我看来,这应该与这个表达一致

SELECT IGrp, COUNT(Value1>1) AS V1High, COUNT(Value2>1) AS V2High
FROM Tbl GROUP BY IGrp

但是这在T-SQL中是不可能的,因为Count()不采用布尔值。那么它真的是用WHERE Value>1COUNT(*)进行多个查询并且之后加入它们的唯一可行方法吗?还是有诀窍来达到预期的效果?

提前致谢。

答案
SELECT IGrp, 
    COUNT(CASE WHEN Value1 > 1 THEN 1 ELSE NULL END) AS V1High, 
    COUNT(CASE WHEN Value2 > 1 THEN 1 ELSE NULL END) AS V2High 
FROM Tbl
GROUP BY IGrp
另一答案

您可以使用CASE语句:

SELECT IGrp, 
    SUM(CASE WHEN Value1>1 THEN 1 ELSE 0 END) AS V1High, 
    SUM(CASE WHEN Value2>1 THEN 1 ELSE 0 END) AS V2High 
FROM Tbl GROUP BY IGrp 
另一答案

利用case when将为你工作

SELECT IGrp, 
 sum(case when isnull(Value1,0)>1 then 1 else 0 end) AS V1High, 
 sum(case when isnull(Value2,0)>1 then 1 else 0 end) AS V2High 
FROM Tbl GROUP BY IGrp 
另一答案
SELECT IGrp, 
    COUNT(CASE WHEN Value1 = 'Foo' THEN 1 ELSE NULL END) AS Tot_Foo, 
    COUNT(CASE WHEN Value1 = 'Blah' THEN 1 ELSE NULL END) AS Tot_Blah 
FROM Tbl
GROUP BY IGrp

这也可用于比较同一字段的2个不同值,如上所示进行微小更改。

非常有助于验证应该以1:1的比例存在的值。

另一答案

你可以在COUNT()函数中放入一个CASE .. WHEN ..语句,当条件成立时返回1,否则返回NULL。

以上是关于postgresql 一个字段多个值的查询sql怎么写的主要内容,如果未能解决你的问题,请参考以下文章

sql 语句,查询条件,两个字段拼接和一个串比较怎从实现呢?sql 语句怎么写!谢谢!

sql 当中 如何查询某个字段中的值的第几个字符中含有相应的值

sql查询字段中所有等于某些值的数据

sql如何根据一个字段的多个值查询

sql中如何按某字段值的首字母分组?

sql语言 如何将一个字段的值的一部分赋给另外一个字段