0

生徒の名前から 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)

4

0 に答える 0