我们正在将 Microsoft SQL Server 2008 R2 用于我们的经典 ASP 应用程序之一。
我们有两个表:
- 表A
- 表B
TableA
具有以下列:
InstName(varchar[1024])
TableB
具有以下列:
机构名称(varchar[1024])
但是,我们发现了一些如下数据
表A
InstName
值为南特大学 [ Universites de Nantes ]
表B
InstitutionName
值为 University of Nantes [ Universites de Nantes ]
我们需要对上述两个表运行内连接选择查询:
select *
from TableA
inner join TableB on TableA.InstName LIKE TableB.InstitutionName
遗憾的是,此内部联接无法将列与南特大学 [ Universites de Nantes ] 的值相匹配
我确实知道“[]”方括号在 Microsoft SQL Server 2008 R2 中具有特殊含义。
请修改所述内连接选择查询,使其转义“[]”方括号,以便找到匹配项,并将所述修改后的查询粘贴到此 stackoverflow.com 票证上。
此外,请告知我应该如何处理其他特殊字符,例如在 Microsoft SQL Server 2008 R2 中具有特殊含义的“[]”方括号。
最佳答案
如果您需要使用包含 [
的 LIKE
来 JOIN
两个字段,则需要转义左括号,因为括号是通配符。对于任何通配符,您可以使用括号 []
- 这将搜索指定范围内的任何单个字符。
例如,这应该适用于您使用 REPLACE
的场景:
select *
from yourtable t inner join
yourtable2 t2 on t.field like replace(t2.field,'[', '[[]')
或者,对于您的示例数据,您没有理由使用 LIKE
,因为 =
的工作原理相同。
关于SQL Server 2008 R2 内连接无法匹配 varchar 字段,因为它包含特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23771776/