SQL多表模糊匹配的问题

新手上路,请多包涵

比如我的两张表A,B。
A中存在字段 cola ,为String格式,有值例如"北京昌平"
B中存在字段 colb ,为String格式,有值例如"昌平"
想将cola 和 colb模糊匹配关联起来。
目前的代码是
select * from A join B on B.cola like "%"+B.colb+"%";

但是会报错:
only accepts non-equal join conditions with an equal join conditon "%"。

求各位大神解答。

阅读 6.4k
3 个回答
create table test(
    tname varchar(255) comment '姓名'
) comment '测试表'

insert into test(tname) values('李雷雷'),('李雷'),('韩梅梅')

select * from test;

select * from test where tname like '%李%';
  • 以上的sql是在mysql数据库测试通过,你的sql语法有问题。
  • java开发中使用mybatis语法:
<select id="list" resultType="map">
    /* sql */
    select * from person where name like CONCAT('%',#{condition},'%') order by birthday ASC
</select>

是不是不能用双引号呀,你用单引号试试。

我用 sql server 测试没问题。

clipboard.png

--熊嘚、你sql语句的格式都错了、
--应该是 '%'+ B.colb +'%'
--sql里面`varchar`类型的数据都用''包含起来的、
--建议多看看sql的语法规则
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏