php - PostgreSQL json 在 PHP Yii2 中选择查询替换

标签 php json postgresql yii2 postgresql-9.4

在 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. ["1", "2", "3", "4"]
  2. ["1", "2", "3"]

它在 pgAdmin3 SQL 编辑器中工作。

PostgreSQL 9.41 jsonb Operators

最佳答案

在 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/

相关文章:

php - 从 PHP 数组读取时 [] 是什么意思?

php - 我需要一种人类可读但可解析的文档格式

php - 如何在 PHP 中集成谷歌地图并用标志标记地点

java - 从 json 获取对象会产生 java.lang.RuntimeException : Failed to invoke public java. util.Dictionary() ,不带参数

java - 如何将 XML 转换为仅 STRING 类型的 Json

ruby-on-rails - 尝试为 ror 应用程序设置 postgres,出现错误 - fe_sendauth : no password supplied

postgresql - 在过滤未索引的列后是否可以从 PostGIS 地理空间索引中读取?

php - move_uploaded_file() 返回 false

php - 为什么我的 19 位数字会四舍五入为 17 位数字

sql - 使用通配符选择 PostgreSQL 中的多列