SQL中的部分字符串比较

时间:2017-05-11 20:47:32

标签: sql sql-server

我不知道如何提出问题,如何从表2新模型更新表1中的Model列。我不知道这是否可以通过SQL完成。如果它不可能,我会编写一些代码,通过列表循环。

唯一的常见因素是table2.model可能存在于tabl1.description中。

表1:

Description                         Model
------------------------------------------------
M114-1 vehicle description
vehicle  M114-2 description
track vehicle M116-3 description
troop M117 command vehicle

表2

Model               New Model
------------------------------
M114-1              M11412
M114-2              m11412
M114-3              m11412
M116-1              m11611

2 个答案:

答案 0 :(得分:1)

CHARINDEX可以像这样搜索子字符串。

作为选择,验证运行,您可以运行更新!

SELECT *
-- UPDATE T1 SET MODEL=T2.[NEW MODEL]
FROM TABLE1 T1
JOIN TABLE2 T2 ON CHARINDEX(T2.MODEL,T1.DESCRIPTION)>0

答案 1 :(得分:0)

我倾向于将like用于此目的:

update t1
    set model = t2.newmodel
    from t1 join
         t2
         on t1.description like '%' + t2.model + '%';

为了更安全一点,您可能希望坚持说明中的模型名称被空格包围(或在字符串的开头或结尾):

update t1
    set model = t2.newmodel
    from t1 join
         t2
         on ' ' + t1.description + ' ' like '% ' + t2.model + ' %';