将表中的字符串替换为另一列

时间:2021-06-09 03:44:08

标签: sql sql-server tsql

我在 SQL-Server 中有 2 个表:

第一个表是产品

ID       NameEnglish          NameFrench 
1        Box of Banana          NA
2        Product apple          NA
3        Pallet of Bread        NA

第二表翻译

NameEnglish       NameFrench 
Banana            Banane
apple             Pomme
Bread             Pain

我想根据我的表格翻译在列 (Namefrench) 中使用以下内容更新第一个表格

ID       NameEnglish             NameFrench 
1        Box of Banana          Box of Banane 
2        Product apple          Product Pomme
3        Pallet of Bread        Pallet of Pain

如何替换和更新我的列 NameFrench?

2 个答案:

答案 0 :(得分:4)

试试这个:

UPDATE P 
    SET P.NameFrench= REPLACE(P.NameEnglish,T.NameEnglish,T.NameFrench)
FROM Product P 
    INNER JOIN Translation T ON P.NameEnglish LIKE '%' + T.NameEnglish + '%'

这里加入了 Product NameEnglish,其中包含 Translation NameEnglish。 还用于在 Product NameEnglish 列中将 Translation NameEnglish 替换为 NameFrench。

参考:

REPLACE (Transact-SQL)

How to use column name as part of a LIKE statement in a WHERE clause of a JOIN

答案 1 :(得分:0)

另一种方式:

UPDATE t1 SET namefrench = REPLACE(t1.nameenglish, RIGHT(RTRIM(t1.NameEnglish), LEN(t2.NameEnglish)), t2.NameFrench) 
        FROM table1 t1 
        INNER JOIN table2 t2 
        ON RIGHT(RTRIM(t1.NameEnglish), LEN(t2.NameEnglish)) = t2.NameEnglish