Postgres,jsonb

时间:2017-05-19 22:25:30

标签: java postgresql

如何编写查询:

where data @> '[{"id": "1884595530"}]'

在java中,假设1884595530是一个查询参数。我试过了

String sql = "where data @> '[{\"id\": :id}]'"

但它以错误结束:

enter code here预期","或"]",找到":"。

1 个答案:

答案 0 :(得分:0)

我不相信你需要让你的json字符串成为列表/数组。数据字段是jsonb吗?如果是这样,您应该能够执行以下操作:

// MARK: - UITableViewDelegate

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let cell = tableView.cellForRow(at: indexPath)!
    cell.accessoryType = UITableViewCellAccessoryType.checkmark
    selectedRow = indexPath.row
}

override func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
    let cell = tableView.cellForRow(at: indexPath)!
    cell.accessoryType = UITableViewCellAccessoryType.none
}

// MARK: - UITableViewDataSource

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "cell")

    // preventing selection style
    cell.selectionStyle = UITableViewCellSelectionStyle.none

    cell.textLabel?.text = "some text"

    if (indexPath.row == selectedRow) {
        cell.accessoryType = UITableViewCellAccessoryType.checkmark
        // just wanted to make it selected, but it also can scroll to the selected position
        tableView.selectRow(at: indexPath, animated: false, scrollPosition: UITableViewScrollPosition.none)
    }

    return cell
}

如果id是整数而不是字符串,则可能需要执行以下操作:

where data @> '{"id":"1884595530"}'::jsonb

http://dbfiddle.uk/?rdbms=postgres_9.6&fiddle=123b96326f463fbdc2e670a5146e2c0d