2

私はそれが不可能であると確信していますが、SQLステートメントを書くことが可能かどうかここで専門家に尋ねたいと思います

Select * from ... Where [‘sent_to’]['bissness_id']=3516 . 

はいの場合、その構文は何ですか?(下の写真をご覧ください)

選択*から...ここでsent_to['bissness_id']= 3516

4

6 に答える 6

1

このようなものが機能します:

select * from web_query where sent_to like '%"business_ids":["3516"]%';

または、代わりに:

select * from web_query where sent_to like '%"business_ids":[%"3516"%]%';

ただし、JSONを文字列値としてデータベース列に格納するべきではありません。これは、データベースの目的をいくつかのレベルで打ち負かします。

編集:テーブル構造の変更を避けたいが、データベースレイアウトの構造的改善の恩恵を受けたい場合は、sent_toビュー列に解析されるいくつかのビューの記述を検討できます。

于 2013-02-07T09:14:52.377 に答える
0

これは機能するはずです:

select * from web_query where sent_to like '%"business_ids":["3516"]%';
于 2013-02-07T09:22:51.823 に答える
0

send_to列にbusinessIdsしかない場合は、次のようにするだけです。

Select * from ... Where sent_to LIKE '%"3516"%'
于 2013-02-07T09:25:41.833 に答える
0

以下のコードを試してください

SELECT * FROM TABLE_NAME t1
WHERE t1.sent_to.business_ids = 3516;
于 2013-02-07T09:23:40.693 に答える
0

あなたが求めていることができるとは思いませんが、簡単なトリックでこれを行うことができます

select * from yourtable where sent_to like '%5060%' 

これにより、ビジネス ID 5060 の行が取得されます。

要件に応じてより柔軟性が必要な場合は、別のテーブルを選択できます

于 2013-02-07T09:43:55.383 に答える
0

あまり明確な質問ではありません..

sent_to に「bissness_id」以外のものがあることに対応する必要がある場合は、明示する必要があります。

DECLARE @FilterID Varchar(10) = '"3516"'
Select * from ... Where sent_to LIKE '%'+@FilterID+'%'
                AND sent_to LIKE '%business_ids%'

列に「bissness_id」しかない場合は、より簡単です

DECLARE @FilterID Varchar(10) = '"3516"'
Select * from ... Where sent_to LIKE '%'+@FilterID+'%'

あなたの例では、where句に整数があるため..これが意図的で質問の一部である場合は、変換を使用できます。

DECLARE @FilterInt Int = 3516
DECLARE @FilterID Varchar(10) = '"' + CAST(3516 AS Varchar(10)) + '"'
Select * from ... Where sent_to LIKE '%'+@FilterID+'%'
                AND sent_to LIKE '%business_ids%'
于 2013-02-07T09:59:06.340 に答える