在 PHP Yii2 中是否有任何替代此查询的方法?
SELECT * FROM my_table WHERE my_column ?& array['2', '1', '3', '4'];
my_column = 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", "2", "3", "4"]
["1", "2", "3"]
它在 pgAdmin3 SQL 编辑器中工作。
最佳答案
在 PostgreSQL 中,?
是 jsonb_exists()
函数的别名。 ?&
是 jsonb_exists_all()
的别名。所以,你可以这样写你的查询:
SELECT * FROM my_table WHERE jsonb_exists_all('my_column', array['2', '1', '3', '4']);
关于php - PostgreSQL json 在 PHP Yii2 中选择查询替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29618564/