问题:PHP Yii2中的PostgreSQL json选择查询替换

PHP Yii2 中的这个查询有什么替代品吗?

SELECT * FROM my_table WHERE my_column ?& array['2', '1', '3', '4'];

my_column u003d jsonb

因为我收到这个错误

Error Info: Array
(
  [0] => 42601
  [1] => 7
  [2] => ERROR:  syntax error at or near "$1"
  LINE 1: SELECT * FROM my_table WHERE my_column $1& array['2', '1', '3',       '...
                                                 ^
)

我正在使用 PHP Yii2 和 PostgreSQL 9.4:

$sql = "SELECT * FROM my_table WHERE my_column ?& array['2', '1', '3', '4'];";

$model = TestModel::findBySql($sql)->asArray()->all();

此查询的目的是比较数据库中是否存在该值。

数据库有:

1.["1", "2", "3", "4"]

2.["1", "2", "3"]

它适用于 pgAdmin3 SQL 编辑器。

PostgreSQL 9.41 jsonb 运算符

解答

在 PostgreSQL 中,?jsonb_exists()函数的别名。?&jsonb_exists_all()的别名。因此,您可以像这样编写查询:

SELECT * FROM my_table WHERE jsonb_exists_all('my_column', array['2', '1', '3', '4']);
Logo

PostgreSQL社区为您提供最前沿的新闻资讯和知识内容

更多推荐