SQL:如何在列上使用LIKE关键字而不是仅使用一个值?

时间:2014-05-20 17:54:23

标签: sql sql-server sql-like

以下是我尝试的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     |

应该没有空字段。为什么会这样?

2 个答案:

答案 0 :(得分:3)

您的第一个查询是正确的,除了您转换了需要通配符的值,然后只需添加另一个百分比符号。

AND R.Type LIKE '%' + H.Type + '%'

%是通配符,因此您可以使用它A424但不匹配424A

两边的符号百分比符合A424A以及424A

每个百分比符号都会受到影响,所以如果您的要求与您说的那样具体,那么您只需要H.Type右侧的百分比。

答案 1 :(得分:2)

你正在向后做比较。你想要:

and R.Type like H.Type + '%'

这将匹配:

  • R.type = 424A
  • H.type = 424

如果H.Type是数字,则先将其投射:

and R.Type like cast(H.type as varchar(255)) + '%'