LIKE 表达式的左侧必须计算为 varchar?
Left side of LIKE expression must evaluate to a varchar?
我正在使用基于字段内字符串的过滤器编写查询。但是,我 运行 查询显示错误:
Left side of LIKE expression must evaluate to a varchar
我想根据 custom_field
.
按所有购买 BMW 的人筛选
这是自定义字段中的示例数据:
{ "car_model;":"BMWZ4", "car_id":"0980291", "manufacture":"bmw" }
代码:
SELECT
first_name,
Last_name,
country,
custom_field
FROM
sales_table
WHERE
custom_field LIKE '%BMWZ4%'
预期结果
first_name: John
last_name: Parker
country: Germany
custom_field: {"car_model;":"BMWZ4","car_id":"098222291","brand":"bmw"}
SELECT
first_name,
Last_name,
country,
custom_field
FROM sales_table
WHERE cast( custom_field as varchar(max)) LIKE '%BMWZ4%'
您的列 custom_field
不是随机字符串。它具体是一个 JSON 字符串。事实上,它可能根本不会存储为字符串,使用称为 JSONB.
的二进制格式
支持 JSON 的数据库(现在几乎所有的主要数据库)都具有定制的 JSON 功能。您应该使用这些函数来提取模式和值。
通常,将 JSON 列视为其正确类型比将其视为字符串会产生更高效的查询。一些数据库甚至允许在 JSON 列上建立索引。
我正在使用基于字段内字符串的过滤器编写查询。但是,我 运行 查询显示错误:
Left side of LIKE expression must evaluate to a varchar
我想根据 custom_field
.
这是自定义字段中的示例数据:
{ "car_model;":"BMWZ4", "car_id":"0980291", "manufacture":"bmw" }
代码:
SELECT
first_name,
Last_name,
country,
custom_field
FROM
sales_table
WHERE
custom_field LIKE '%BMWZ4%'
预期结果
first_name: John
last_name: Parker
country: Germany
custom_field: {"car_model;":"BMWZ4","car_id":"098222291","brand":"bmw"}
SELECT
first_name,
Last_name,
country,
custom_field
FROM sales_table
WHERE cast( custom_field as varchar(max)) LIKE '%BMWZ4%'
您的列 custom_field
不是随机字符串。它具体是一个 JSON 字符串。事实上,它可能根本不会存储为字符串,使用称为 JSONB.
支持 JSON 的数据库(现在几乎所有的主要数据库)都具有定制的 JSON 功能。您应该使用这些函数来提取模式和值。
通常,将 JSON 列视为其正确类型比将其视为字符串会产生更高效的查询。一些数据库甚至允许在 JSON 列上建立索引。