2017-03-07 59 views
0

如何在文本字符串中找到匹配项。tsql如何在文本字符串中找到姓氏

例如。我在Col1中有一个“史密斯”的姓氏。

我在Col2中有一个“A B Smith先生和J Bike太太”的组名。

如何搜索组名以查找“Smith”的匹配项?

组名以上述格式手动输入到CRM系统中,因此我无法更改此设置。

感谢

+0

提示:这是有帮助的标记同时与相应的软件数据库的问题(MySQL和甲骨文,DB2 ,...)和版本,例如'的SQL服务器2014'。语法和功能的差异往往会影响答案。 – HABO

回答

0

你需要的CASECHARINDEX组合:

SELECT 
    CASE 
     WHEN CHARINDEX(Col1, Col2, 0) > 0 
      THEN 'Exists' 
     ELSE 'Not Exists' 
    END [Does Col1 Exist in Col2] 
FROM Table 

CASEREPLACE的组合:

SELECT 
    CASE 
     WHEN LEN(COL2) > LEN(REPLACE(COL2, COL1, '')) 
      THEN 'Exists' 
     ELSE 'Not Exists' 
    END [Does Col1 Exist in Col2] 
FROM Table 

,或者,如果你只想其中Col1中的值col2的存在,那么结果:

SELECT 
    Col1 
    , Col2 
FROM Table 
WHERE LEN(COL2) > LEN(REPLACE(COL2, COL1, '')) 
+0

嗨,作品的第二种说法类型,但问题是,如果任何文本匹配,它带回“存在”。所以举个例子,如果我只输入“m”这个字母,它就是因为“Mr”而存在的。如果我输入“Z”,则不存在。 – user114790

+0

我不明白,声明有什么问题?这是正确的,根据您的要求。也许你有你没有发布在你的问题中的附加条件/规则。 –

+0

最后的声明起作用。非常感谢你。 – user114790

0

如果你想找到所有col2的,你可以使用百分号和LIKE关键字史密斯搜索字符串:

SELECT Col2 
FROM [TABLENAME] 
WHERE Col2 LIKE '%Smith%' 
+0

嗨,我需要验证col1中保存的数据与col2中字符串的任何部分匹配,所以不明白这是如何工作的? – user114790

相关问题