You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake中使用LIKE运算符比较两列报错求助

问题排查与解决

几个关键错误点

  1. 字段名写错了:你说明table1的城市字段是City,但查询语句里用的是table1.city_name,这要么会导致字段不存在,要么如果city_name是数值类型,就会触发你看到的报错。
  2. 字符串拼接语法不对:不同数据库的字符串拼接规则不一样,+不是通用的拼接符——比如MySQL、PostgreSQL不支持用+拼字符串,必须用CONCAT函数;就算是SQL Server支持+,如果字段类型不是字符串也会报错。
  3. 匹配逻辑搞反了:你的需求是找table2里包含table1规范城市名的记录,所以应该是table2.City LIKE 包含table1城市名的通配符串,而不是反过来。

针对不同数据库的正确查询语句

MySQL/PostgreSQL

用CONCAT函数拼接通配符:

SELECT table1.City
FROM table2
JOIN table1 ON table2.City LIKE CONCAT('%', table1.City, '%');

SQL Server

两种写法都可以,用CONCAT更稳妥:

-- 写法1:用+拼接(需确保字段都是字符串类型)
SELECT table1.City
FROM table2
JOIN table1 ON table2.City LIKE '%' + table1.City + '%';

-- 写法2:用CONCAT函数(推荐)
SELECT table1.City
FROM table2
JOIN table1 ON table2.City LIKE CONCAT('%', table1.City, '%');

Oracle

用||作为连接符:

SELECT table1.City
FROM table2
JOIN table1 ON table2.City LIKE '%' || table1.City || '%';

额外提醒

  • 确认table1.City和table2.City都是字符串类型(比如VARCHAR、TEXT),如果是数值类型,拼接时肯定会报错。
  • 别再用from table2, table1这种隐式连接了,显式JOIN语法更清晰,不容易出错。

内容的提问来源于stack exchange,提问作者Anisha A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 07:40:36