生徒の名前から dity_name を切り取り、Standard_Name に置き換えたいと考えています。
実際には、フィールド Standard_name と dirty_name を含む「Name_Lookup_Table」という名前のルックアップ テーブルがあります。
クエリのこの部分のように、student_first name のループアップ テーブルから Dirty_Name を見つけます。
tas.Student_First_Name like '% '+nlt.Dirty_Name
今、私はこのdirty_nameをstudent_first_nameのstandard_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 ans 4 の出力が正しくありません。行 2 では、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)