LIKE表达式的左侧必须计算为varchar吗?

时间:2019-06-20 03:53:21

标签: sql sql-like

我正在使用基于字段内字符串的过滤器编写查询。但是,我正在运行查询,它显示错误:

  

LIKE表达式的左侧必须计算为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"}

2 个答案:

答案 0 :(得分:1)

这个评论太长了。

您的列custom_field不是随机字符串。特别是一个JSON字符串。实际上,使用称为JSONB的二进制格式可能根本不会将其存储为字符串。

支持JSON(如今几乎是所有主要数据库)的数据库都具有定制的JSON函数。您应该使用这些函数来提取模式和值。但是,在不了解数据库的情况下,没有人可以给您具体的答案。

通常,将JSON列视为其正确类型会比将其视为字符串产生更有效的查询。有些数据库甚至允许在JSON列上建立索引。

答案 1 :(得分:0)

document.onload(() => document.getElementById('play').click());