0

我想从学生的名字中删除 dity_name 并将其替换为 Standard_Name。

实际上我有一个名为“Name_Lookup_Table”的查找表,其中包含字段 Standard_name 和 dirty_name

在查询的这一部分中,我从学生名字的循环表中找到 Dirty_Name。 tas.Student_First_Name like '% '+nlt.Dirty_Name

现在我想用 student_first_name 中的standard_name 替换这个dirty_name

我该怎么做?

我正在尝试这个,但标准名称不适合提取它的正确位置

SELECT Student_First_Name
    ,concat(LEFT(Student_First_Name , LEN(Student_First_Name)-LEN(nlt.Dirty_Name)),nlt.Standard_Name)
    , nlt.Dirty_Name
    , nlt.Standard_Name


FROM Transformed_All_Student tas
        LEFT JOIN Name_Lookup_Table nlt
                    ON tas.Student_First_Name like '% '+nlt.Dirty_Name
WHERE tas.Student_First_Name like '% '+nlt.Dirty_Name


UNION

   SELECT Student_First_Name
 ,concat(nlt.Standard_Name,LEFT(Student_First_Name , LEN(Student_First_Name)-LEN(nlt.Dirty_Name)))
         , nlt.Dirty_Name
        , nlt.Standard_Name
    FROM Transformed_All_Student tas 
            LEFT JOIN Name_Lookup_Table nlt 
                    ON tas.Student_First_Name like nlt.Dirty_Name+' % '

WHERE tas.Student_First_Name like nlt.Dirty_Name+' % '

    UNION

SELECT Student_First_Name
    ,concat(LEFT(Student_First_Name , LEN(Student_First_Name)-LEN(nlt.Dirty_Name)),nlt.Standard_Name)        
    , nlt.Dirty_Name
    , nlt.Standard_Name

FROM Transformed_All_Student tas 
        LEFT JOIN Name_Lookup_Table nlt 
            ON tas.Student_First_Name like '% '+nlt.Dirty_Name+' % '

WHERE tas.Student_First_Name like '% '+nlt.Dirty_Name+' %'

来自循环表的 ps Dirty_name 和 Standard_name 可以是可变长度

输出:

Full_Name             Replaced_Name        Dirty_Name     Standard_Name
1. Abdul              Adul                 Abdul          Adul
2. Mouhammad Saroor   MouhammMohammad      Mouhammad      Mohammad
3. Rashid             Rasheed              Rashid         Rasheed
4. Salim              Saleem               Salim          Saleem
5. Sh. Yaseen         Sh. YasSheikh        Sh.            Sheikh

第 2 行和第 4 行的输出不正确。在第二行中,replaced_Name 应该是 Mohammad Saroor,在第 4 行中,replaced_Name 应该是 Sheikh Yaseen:S

replace_name 来自查询: concat(LEFT(Student_First_Name , LEN(Student_First_Name)-LEN(nlt.Dirty_Name)),nlt.Standard_Name)

4

0 回答 0