sql - 使用 LIKE 语句左连接表
问题描述
我有两张桌子一张是order
另一张sales
+-------------+
| OrderNumber |
+-------------+
| 1 |
| 2 |
+-------------+
+---------------+
| SalesNumber |
+---------------+
| /sales/1/lep |
| /sales/test/2 |
+---------------+
所以我想将左连接与这个数字重合的表一起使用,所以我认为有些人认为:
select * from order as o
left join sales as s on s.SalesNumber LIKE '%/'+o.OrderNumber+'%'
但如果抛出错误
将 varchar 值“%”转换为数据类型 int 时转换失败。
我究竟做错了什么?
解决方案
一个优点concat()
是您不需要转换——该函数将数字转换为字符串。所以:
on s.SalesNumber LIKE CONCAT('%/', o.OrderNumber, '%')
您可以使用+
,但必须转换为字符串:
on s.SalesNumber like '%/' + convert(varchar(255), o.OrderNumber) + '%'
请注意,在 上有一个长度varchar()
。 指定字符串时,始终在 SQL Server 中使用长度。默认值因上下文而异,可能无法满足您的要求。