- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
想要启用/使用/替代 JSON_EXTRACT 方法,它与使用 laravel 的 SQLite、PostgreSQL、MySQL 和 MSSQL 数据库中的 JSON_EXTRACT 一样工作。
以下查询在 MySQL 中运行,其中 table2
。attribute_data
是 json 数据列。
$query->select('table1.*');
$query->where(function ($q) use ($locale) {
$q->where(Db::raw('JSON_EXTRACT(`table2`.`attribute_data`, "$.title")'), '!=', "");
$q->where('table2.locale', '=', $locale);
});
$query->join('table2', function ($join) use ($locale) {
$join->on('table1.id', '=', 'table2.model_id');
});
错误: SQLSTATE[HY000]:一般错误:1 没有这样的函数:JSON_EXTRACT
最佳答案
json
是数据库中的复杂数据结构。您不会找到一种方法适用于四个不同的数据库提供程序,因为它们都有自己处理 json 的专有方式。
Laravel 只为 MySQL 和 Postgres 使用实际的 json
数据类型。对于 SQLite 和 MSSQL,json 存储在 varchar
字段中。
Laravel 理解用于查询 MySQL (5.7+) 和 Postgres 中的 json 字段的“箭头”运算符 (->
)。因此,对于 MySQL 和 Postgres,您的查询将如下所示:
$query->select('table1.*')
->join('table2', function ($join) {
return $join->on('table1.id', '=', 'table2.model_id');
})
->where(function ($q) use ($locale) {
return $q
->where('table2.attribute_data->title', '!=', "")
->where('table2.locale', '=', $locale);
});
但是,这在 SQLite 和 MSSQL 中可能会失败,因为它们不理解箭头运算符。
在不更改查询的情况下跨所有数据库提供程序进行这项工作的唯一方法是将 json 数据存储在所有数据库的 varchar 中,然后使用 LIKE 运算符查询 json 字符串。这将是低效的并且可能容易出错。否则,您需要根据您正在使用的数据库调整查询。
关于php - 我如何使用 laravel 在 SQLite、PostgreSQL 和 MSSQL 数据库中启用/使用 JSON_EXTRACT 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46110197/
我的 mysql 列名为 json: {"myarray":[ { "users":"82,191", type":"3" } ]} 这是表列 json 上方我想找到 id 为 191.82 的用户,
我无法在 JSON 记录上使用 (mysql) JSON_EXTRACT,例如: [{"id": 156, "betas": [{"id": 324, "title": "mario", "gamma
我无法在 JSON 记录上使用 (mysql) JSON_EXTRACT,例如: [{"id": 156, "betas": [{"id": 324, "title": "mario", "gamma
我们有一个日志表,它会随着新事件的发生而增长。目前,我们存储了大约 120,000 行日志事件。 事件表如下所示: 'CREATE TABLE `EVENTS` ( `ID` int(11) NOT
我有下表定义: `CREATE TABLE `TestInfo` ( `Info` json DEFAULT NULL ) ; ` 正在插入两行带有 json 值的行。 INSERT INTO `
我的问题是,当我尝试使用 mysql 函数 JSON_EXTRACT 获取数据时,问题是我使用索引 [0] 进行操作,一切正常,但是当我请求下一个 [1] 时,返回 null。我尝试过没有索引来了解搜
语法对我来说是正确的,任何帮助将不胜感激! mysql> select fieldnames from tablename limit 5; +----------------------------
我有以下 JSON-File在 MYSQL数据库: [ { "order" : 0, "value" : 0.168257 }, { "order" : 0.031250,
我正在尝试从一组 jsons 中的每个 json 中提取两个 key (使用 sql legacy) 目前我正在使用 json 提取功能: json_extract(json_column , '$[
下面返回键“a”的值,即“x”。如果人们已经知道 key 名称,这很好。 SELECT JSON_EXTRACT('{"a":"x", "b":"y"}', "$['a']") as val 在我的用
下面返回键“a”的值,即“x”。如果人们已经知道 key 名称,这很好。 SELECT JSON_EXTRACT('{"a":"x", "b":"y"}', "$['a']") as val 在我的用
我有元数据存储在带有地理标记的 mysql 中。我想提取一组特定数据的纬度和经度,我这辈子都无法弄清楚将级别指定到值的语法 我需要单独的值,这样我就可以用它来检查该位置是否与记录的位置相匹配,如果不相
MyJsonArray [{"ID":"D29","PersonID":"23616639"},{"ID":"D30","PersonID":"22629626"}] 我想从 sql 函数将此数组设置
我正在 MySQL 中使用 JSON 类型列。我有一个包含两列 id 和 jsondata (json 类型列)的表。以下是我的 json 行的示例: { "id": "35", "var
当使用 JSON.stringify 将 JSON 对象保存在 Mysql 中时,它会将字符“\”放入字符串中。我正在构建一个 VIEW,我需要用 json_extract 来分离数据,因为我使用了
我创建了一个简单的搜索表单。首先,我分解单词并进行一些查询(用于一次搜索多个单词)。另外,我只想搜索电影标题。电影标题可以在 movie_data 中找到。 我的名为“movies”的数据库有以下行:
您好,我有一个关于 mysql json_extract 函数的问题。 有两个表; users +------------------------------------+ | id | em
首先,我不确定我的标题是否以正确的方式解释了这个问题,但我认为我的代码会。 而不是这样做: SELECT * FROM mytable WHERE JSON_EXTRACT(`cars`,'$."65
我有一个数据库,其中有一组数据存储在 JSON 列中。我需要在 JSON 数组的特定位置找到所有具有空值的值。使用 JSON_EXTRACT 提取数据时看起来微不足道,我对 null 的比较都没有奏效
当使用 Google 的 BigQuery 时,有一个 function可以使用 jsonPath 从 json 字符串中提取元素。例如: SELECT JSON_EXTRACT(data,"$.ke
我是一名优秀的程序员,十分优秀!