我正在尝试使用JSON_EXTRACT从我的MariaDB服务器获取JSON值。然而,有些JSON键有很多空格,如行末、空格、制表符等。数据已经存在。因此,我无法给出正确的键名,因为该键包含空格。请注意,JSON值中也存在空格,但我们可以使用TRIM()函数从值中删除空格。但是我们该如何修剪键名呢?
例如:
下面的查询无法工作:
查询不起作用是因为JSON键“wheels”之间存在空格。同样的情况也出现在“mileage”键中。
我们该如何解决这个问题呢?提前感谢您的帮助。
例如:
CREATE TABLE test.product_json_table (
id INT AUTO_INCREMENT NOT NULL,
product VARCHAR(20) NOT NULL,
description LONGTEXT ASCII,
PRIMARY KEY (id),
CHECK (JSON_VALID(description))
) ENGINE = InnoDB ROW_FORMAT = DEFAULT;
INSERT INTO test.product_json_table(product, description)
VALUES( 'truck_space', '{" \r\nwheels ": 4, "seats": 3, " fuel ": "diesel", " \r\n mileage ": 8}');
下面的查询无法工作:
SELECT id, product, description
FROM test.product_json_table
WHERE JSON_EXTRACT(description, '$.wheels') > 2;
查询不起作用是因为JSON键“wheels”之间存在空格。同样的情况也出现在“mileage”键中。
我们该如何解决这个问题呢?提前感谢您的帮助。
JSON_EXTRACT(description, '$." \r\nwheels "')
。我现在不在MySQL 5.7实例附近,所以无法测试。 - Bill Karwin