![](/img/trans.png)
[英]how do i select certain key/value pair from json field inside a SQL table in SNOWFLAKE
[英]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.