C# Teradata字符比较

C# Teradata字符比较,c#,sql,teradata,C#,Sql,Teradata,在C应用程序中,我有一个从Teradata表填充的DataTable。 teradata表数据如下所示: UnitNum UnitName ------- -------- 123456 Location A1 - 123456 123456 Location B1 - 123456 UnitNum UnitName ------- -------- 123456 Location A1 / B1 - 123456 我想创建如下输出: UnitNum UnitName -------

在C应用程序中,我有一个从Teradata表填充的DataTable。 teradata表数据如下所示:

UnitNum UnitName
------- --------
123456  Location A1 - 123456 
123456  Location B1 - 123456
UnitNum UnitName
------- --------
123456  Location A1 / B1 - 123456
我想创建如下输出:

UnitNum UnitName
------- --------
123456  Location A1 - 123456 
123456  Location B1 - 123456
UnitNum UnitName
------- --------
123456  Location A1 / B1 - 123456
我用以下代码在C中完成了这项工作:

string compSql2 = "SELECT UnitNum , 
                   UPPER(MAX((CASE a.RNK WHEN 1 THEN a.UnitName ELSE NULL END))) Location1,
                   UPPER(MAX((CASE a.RNK WHEN 2 THEN a.UnitName ELSE NULL END))) Location2 
                   FROM (SELECT UnitNum , UnitName, RANK(UnitName) AS RNK 
                     FROM idw_app_field_sync.compressor_list GROUP BY UnitNum) AS a 
                   GROUP BY 1";
        DataTable compdt = TeradataConnector.RunQuery(compSql2);

        compdt.Columns.Add("UnitName");
        for (int i = 0; i < compdt.Rows.Count; i++)
        {
            if (compdt.Rows[i].Field<string>("Location2") != null)
            {
                string loc1 = compdt.Rows[i].Field<string>("Location1");
                string loc2 = compdt.Rows[i].Field<string>("Location2");
                string unitname;

                for (int j = 0; j < loc1.Length - 9; j++)
                {
                    if (!loc2[j].Equals(loc1[j]))
                    {
                        unitname = loc2.Substring(0, loc2.Length - 9) + @" / " + loc1.Substring(j);
                        compdt.Rows[i].SetField<string>("UnitName", unitname);
                    }
                }
            }
            else
            {
                compdt.Rows[i].SetField<string>("UnitName", compdt.Rows[i].Field<string>("Location1"));
            }
        }

如果可能的话,我想用TeradataSQL来完成这项工作。但是,我不知道如何将字符串的字符与SQL进行比较,就像我对C所做的那样。

基于SELECT,每个UnitNum似乎只有两行,最后九个字符总是相同的。还有其他规定吗?位置名称总是一个单词还是有空格?位置名称可以有空格。对于共享一个UnitNum的两个,位置名称的第一部分也将相同。我忘了问:您的Teradata版本是什么?Teradata版本14.1