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 列上建立索引。