查询字符串的一部分

时间:2018-02-22 06:07:05

标签: postgresql

我正在尝试查询包含

等字符串的列
595.1,N30.10
630.5,E10

我尝试将这两个值分成不同的列

split_part(code, ',', 1) AS code1, 
split_part(code, ',', 2) AS code2

但现在我看到有些行有3个(或可能更多)

785.59, R57.1, R

我想知道是否有办法只指定和查询字符串的第一部分而不必拆分字符串。在这种情况下,只查找具有595.1,785.59的enteries并忽略其余部分。

SELECT distinct ON (id) id,time,year,code
FROM data
where code= ANY('{595.1,785.59}');

2 个答案:

答案 0 :(得分:1)

我认为你已经拥有了你需要的逻辑,你只需要将它连接在一起:

SELECT DISTINCT ON (id) id, time, year, code
FROM data
WHERE split_part(code, ',', 1) = ANY('{595.1,785.59}');

这个逻辑似乎在下面的演示中有效。

Demo

答案 1 :(得分:1)

要查询代码列的第一部分,您可以执行以下操作

SELECT * FROM tableName
WHERE split_part(code, ',', 1) = somevalue