我想从学生的名字中删除 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)