SQL:如何在列上使用LIKE关键字而不是一个值?
以下是我尝试的两个查询,但都没有得到我想要的结果:SQL:如何在列上使用LIKE关键字而不是一个值?,sql,sql-server,sql-like,Sql,Sql Server,Sql Like,以下是我尝试的两个查询,但都没有得到我想要的结果: 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关键字而不是一个值?也就是说,我想把H型=424连接到R型=424A 编辑: 以下是我在进行建议调整后得到的一些示例结果: -----------------------------------
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
关键字而不是一个值?也就是说,我想把H型=424连接到R型=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 |
不应该有空字段。为什么会有?您的第一个查询是正确的,只是您转换了需要通配符的值,然后只添加了另一个百分比符号
AND R.Type LIKE '%' + H.Type + '%'
%
是通配符,因此它与A424
匹配,但与424A
不匹配
两侧带有百分比符号,它将与A424A
以及424A
每个百分比符号都有一个性能命中率,因此,如果您的要求像您所说的那样具体,那么您只需要在
H.Type
的右侧显示百分比,您的第一个查询是正确的,除非您转换了需要通配符的值,然后只需添加另一个百分比符号
AND R.Type LIKE '%' + H.Type + '%'
%
是通配符,因此它与A424
匹配,但与424A
不匹配
两侧带有百分比符号,它将与A424A
以及424A
每个百分比符号都有一个性能命中率,因此,如果您的要求像您所说的那样具体,那么您只需要在
H.Type
的右侧输入百分比,您就是在反向进行比较。你想要:
and R.Type like H.Type + '%'
这将匹配:
- R.type=
424A
- H.type=
424
H.Type
是数字,则首先将其强制转换为:
and R.Type like cast(H.type as varchar(255)) + '%'
你是在反向比较。你想要:
and R.Type like H.Type + '%'
这将匹配:
- R.type=
424A
- H.type=
424
H.Type
是数字,则首先将其强制转换为:
and R.Type like cast(H.type as varchar(255)) + '%'
你想要多个部分匹配:
'%'+R.Type+'%
这将把H.Type
匹配到任何包含R.Type
的字符串。你想要多个部分匹配:'%'+R.Type+'%
这将把H.Type
匹配到任何包含R.Type
的字符串。我同意这一点……但是为什么我仍然是空的呢R.Type的字段
?我同意这一点……但是为什么我仍然得到R.Type的空字段
?进行了调整,但是我仍然收到R.Type的空字段。这是为什么。它不应该是空的,对吗?如果H.Type
是空的,那么它们将匹配。我有H.Type不为空和R.Type为空的查询结果。你确定条件是:R.Type像H.Type+'%'
,左侧是R.Type
,右侧是H.Type
。那是错误的表达。使用正确的。进行了调整,但是我仍然收到R.Type的空字段。这是为什么。它不应该是空的,对吗?如果H.Type
是空的,那么它们将匹配。我有H.Type不为空和R.Type为空的查询结果。你确定条件是:R.Type像H.Type+'%'
,左侧是R.Type
,右侧是H.Type
。那是错误的表达。使用正确的。