我在Redshift工作时有一个跟踪参与位置的字段 - 该字段可以包含以下值:
FT,LC,PostLC,OC,Form,CW
并且可以真正拥有这些组合。我特别只希望看到那些是LC接触点。
这意味着它们必须包含LC字符串 - 如果我这样做:
' ilike'%LC%'我将获得不包含LC位置的结果,但包含PostLC位置。我只需要返回包含LC位置的值和其他值。
例如' FT,LC,PostLC,OC'会很好,但是' PostLC,OC,CW'是不可接受的。
如何将其转换为where子句中的SQL条件?
感谢
答案 0 :(得分:1)
快速回答是你需要在你的思维中包含逗号和空格,以便(例如)like '%, LC%'
有助于区分LC和PostLC。
CREATE TABLE Table1
(engagements varchar(100))
;
INSERT INTO Table1
(engagements)
VALUES
('FT, LC, PostLC, OC, Form, CW')
, ('PostLC, OC, CW')
;
查询1 :
select *
from table1
where engagements like '%, LC%'
<强> Results 强>:
| engagements |
|------------------------------|
| FT, LC, PostLC, OC, Form, CW |
然而,更难(接受)的答案是您应该更改数据模型,以便逗号分隔的字符串成为一个新表,每个新值都有行。
修改强> 另请注意,列表中的第一项没有前面的逗号。所以你的查询会变得有点复杂:
select *
from table1
where engagements like '%, LC%'
or engagements like 'LC ,%'
答案 1 :(得分:1)
您可以使用like
:
where ',' || field || ',' like '%,LC,%'