You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSMS中如何对比两列文本判断某列字符串是否存在于另一列

地址包含关系判断解决方案

基础精确匹配方案

你要实现「判断处理后的手动录入地址是否为系统地址子串」的需求,直接用SQL Server内置的字符匹配函数即可,无需固定截取字符长度,两种常用写法如下:

  1. 使用CHARINDEX函数(返回子串在目标字符串的起始位置,找不到返回0):
CASE 
    WHEN CHARINDEX(TidyManualAddress, CorrectedAddress) > 0 
    THEN 'Y' 
    ELSE 'N' 
END AS AddressMatch
  1. 使用LIKE模糊匹配:
CASE 
    WHEN CorrectedAddress LIKE '%' + TidyManualAddress + '%' 
    THEN 'Y' 
    ELSE 'N' 
END AS AddressMatch

以上两种写法都可以覆盖你举的示例场景:当CorrectedAddress为MovingPlace,MadeUpTown,SomeCountry、TidyManualAddress为MovingPlace时,会直接返回Y。

容错优化方案(应对拼写错误、缩写场景)

如果需要适配手动录入的拼写误差、缩写场景,可以搭配SQL Server的语音匹配函数提升准确率:

  • 用SOUNDEX函数匹配发音相近的字符串,适合拼写错但读音接近的场景:
CASE 
    WHEN CHARINDEX(TidyManualAddress, CorrectedAddress) > 0 
        OR SOUNDEX(TidyManualAddress) = SOUNDEX(CorrectedAddress)
    THEN 'Y' 
    ELSE 'N' 
END AS AddressMatch
  • 用DIFFERENCE函数自定义相似度阈值(返回值为0-4,分值越高相似度越高,通常阈值设为3即可覆盖大部分拼写错误场景):
CASE 
    WHEN CHARINDEX(TidyManualAddress, CorrectedAddress) > 0 
        OR DIFFERENCE(TidyManualAddress, CorrectedAddress) >= 3
    THEN 'Y' 
    ELSE 'N' 
END AS AddressMatch

额外优化建议

  • 匹配前可以将两个地址字段统一转为大写或小写,避免大小写差异导致匹配失败,例如处理地址时加上UPPER()函数:UPPER(REPLACE(CONCAT(AddressLine1,AddressLine2,AddressLine3,AddressLine4),' ','')) AS CorrectedAddress
  • 如果缩写场景较多,可以提前维护一张地址缩写映射表(比如Rd对应Road、St对应Street),匹配前先将地址中的缩写替换为标准全称,可大幅提升匹配准确率。

内容的提问来源于stack exchange,提问作者Brian Dennehy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 08:24:03