SQL JSON显示字符串的一个值

10 浏览
0 Comments

SQL JSON显示字符串的一个值

假设我在我的表中有3列(Postgres数据库):Name,FirstName,Communication。我的Communication列是一个包含以下文本的字符串:

[{"typ":1,"kontext":1,"adresse":"031 *** ** **"},

{"typ":2,"kontext":2,"adresse":"031 *** ** **"},

{"typ":1,"kontext":2,"adresse":"+4179*******"}]

现在我想要使用Name、FirstName和手机号码进行查询。如何从字符串中提取出typ = 1且kontext = 2的号码,并将其作为新的列呈现?

0
0 Comments

问题的原因是想要在一个字符串中显示特定的值,但是由于字符串中包含了JSON格式的数据,所以需要使用特定的SQL语句来实现。

解决方法是使用JSON路径表达式来查询字符串中的特定值。首先需要确保所查询的字段是一个jsonb类型的列,如果不是,则需要通过将其强制转换为jsonb类型来处理。在SQL语句中使用jsonb_path_query_first函数来执行查询,该函数返回一个jsonb值,然后通过使用表达式#> '{}'将其转换为文本值。

具体的解决方法如下所示:

select name, firstname, 
       jsonb_path_query_first(communication, '$[*] ? (@."typ"==1 && @.kontext == 2).adresse') #> '{}' as mobile_number
from the_table

以上代码中的communication是一个jsonb类型的列,jsonb_path_query_first函数用于查询满足条件的值,表达式'$[*] ? (@."typ"==1 && @.kontext == 2).adresse'指定了查询条件,#> '{}'将查询结果转换为文本值。

通过以上的解决方法,我们可以从字符串中显示出特定的值。

0