簡體   English   中英

如何使用SQL在列的列表中的key:value對中選擇一個值?

[英]How do I select a value in a key:value pair within a list in a column using SQL?

在稱為支付的表中,有一個stripeResponseData列,其中的數據具有以下結構:

{"id":"tr_1BlSHbGQXLV7RqqnHJffUVO0","object":"transfer","amount":39415,"amount_reversed":0,"balance_transaction":"txn_1BlSHbGQXfV7AqqnGi2o7UiY","created":1516239215,"currency":"usd","description":null,"destination":"acct_1BWWAmAzms5xPfV9","destination_payment":"py_1BlSHbAzms5xkfV91RHAOrno","livemode":true,"metadata":{},"reversals":{"object":"list","data":[],"has_more":false,"total_count":0,"url":"/v1/transfers/tr_1BlSHbYQXLV7AqqnHJffUVO0/reversals"},"reversed":false,"source_transaction":null,"source_type":"card","transfer_group":null}

在我的SQL SELECT語句中,我只想返回鍵“目標”的值。 如何編寫SQL查詢?

我期望的查詢結果:

SELECT "stripeResponseData" FROM payouts [...]

(我不知道如何寫[...]的地方)應如下所示(假設我們有3行“目標”具有不同的值):

acct_1BWWAmAzms5xPfV9

acct_1AY0phDc9pCDpLR8

acct_1AwG3VL7DXxftOaS

如何從stripeResponseData列中的列表中提取該值?

參見此sqlfiddle 該查詢將從stripResponseData中獲取ID,其中id是特定的id(可能不是很有用,但確實向您展示了如何選擇和查詢):

SELECT data->>'id' FROM stripeResponseData WHERE data @> '{"id":"tr_1BlSHbGQXLV7RqqnHJffUVO0"}';

因為您提到的數據是字符串,所以您需要鍵入轉換才能正確查詢/使用它。 看到這個sqlfiddle

SELECT data::jsonb->>'id' FROM stripeResponseData WHERE data::jsonb @> '{"id":"tr_1BlSHbGQXLV7RqqnHJffUVO0"}';

根據您的編輯,您可以簡單地以幾乎完全相同的方式查詢目標位置。 這將從stripeResponseData where destination = acct_1BWWAmAzms5xPfV9獲取所有id, stripeResponseData where destination = acct_1BWWAmAzms5xPfV9

SELECT data::jsonb->>'id' FROM stripeResponseData WHERE data::jsonb @> '{"destination":"acct_1BWWAmAzms5xPfV9"}';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM