以下是我尝试的2次查询,但没有成功获得我想要的结果:
SELECT H.Type, H.SN, R.Type, R.SN
FROM Hours H
INNER JOIN Repair R
ON H.SN = R.SN AND H.Type LIKE '%' + R.Type
和
SELECT H.Type, H.SN, R.Type, R.SN
FROM Hours H
INNER JOIN Repair R
ON H.SN = R.SN AND H.Type LIKE '%R.Type'
如何为列使用LIKE
关键字而不是一个值? I.E我希望H.Type = 424加入R.Type = 424A
编辑:
以下是我在进行建议调整后得到的一些示例结果:
---------------------------------------
H.Type |H.SN |R.Type |R.SN |
---------------------------------------
R99 |270 |EMPTY |270 |
R99 |270 |EMPTY |270 |
R99 |270 |EMPTY |270 |
R99 |270 |EMPTY |270 |
B134 |427 |EMPTY |427 |
B134 |427 |EMPTY |427 |
B134 |427 |EMPTY |427 |
B134 |427 |EMPTY |427 |
应该没有空字段。为什么会这样?
答案 0 :(得分:3)
您的第一个查询是正确的,除了您转换了需要通配符的值,然后只需添加另一个百分比符号。
AND R.Type LIKE '%' + H.Type + '%'
%
是通配符,因此您可以使用它A424
但不匹配424A
。
两边的符号百分比符合A424A
以及424A
每个百分比符号都会受到影响,所以如果您的要求与您说的那样具体,那么您只需要H.Type
右侧的百分比。
答案 1 :(得分:2)
你正在向后做比较。你想要:
and R.Type like H.Type + '%'
这将匹配:
424A
424
如果H.Type
是数字,则先将其投射:
and R.Type like cast(H.type as varchar(255)) + '%'