0

JSON文字列を含むファイルを持つデータベースがありmyfieldます: ["2","4","1","6"]OR ["1"]。このフィールドのフィルターを作成したいので、次のようにクエリを実行することを考えていました。

SELECT id FROM table_name WHERE myfield = '5'-> 値が 5 でないため、このリターンはIDをエコーできませ["2","4","1","6"]ん。

SELECT id FROM table_name WHERE myfield = '1'-> return はidをエコーできます-> なぜなら -> フィールド上の json 文字列myfieldの値は 1 です。

どうすれば修正できますか?私は何をしますか?

私は試しましたが、うまくいきません:

SELECT id FROM table_name WHERE myfield = '1'

4

3 に答える 3

1

id=1たとえば、確認するには、次のことができます

SELECT 1 as id
FROM table_name 
WHERE find_in_set('1', replace(myfield, '"', '')) > 0

コードでこのように使用できます

$this->db->query("SELECT 1 as id 
                  FROM table_name 
                  WHERE find_in_set('1', replace(myfield, '\"', '')) > 0");
于 2013-02-21T12:08:52.080 に答える
0

first または last item を検索すると、@juergen による解決策は機能しません。このためには、角括弧も置き換える必要があります。これは私のために働いた

SELECT * 
FROM `tbl_tasks_weekly` 
WHERE FIND_IN_SET('1', REPLACE( REPLACE( REPLACE(`myfield`,']','') ,  '[',''),'\"','')) 
于 2015-12-18T07:31:38.220 に答える
0

シリアライゼーションとデシリアライゼーションを使用して、データベース フィールドからデータを保存または取得します。

于 2016-02-18T10:11:25.937 に答える