sql—检查列是否存在,然后使用c从表中进行选择#

insrf1ej  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(266)

请任何人给我指一下正确的方向。我要检查列是否存在,如果存在,请选择此列,否则请选择其他列

select case 
   when exists (
      SELECT *
      FROM Sys.columns c 
      WHERE c.[object_id] = OBJECT_ID('dbo.Municipality') 
         AND c.name = 'AmountTypeLabel'
   )  
   then 1
   else 0
 end

检查列是否存在,然后返回0或1,但没有列名,因此无法在c中检查#
这是我在c中尝试过的#但是正如我之前所说的,没有列名称

DataTable DT;
        string SQL = "";
        try
        {

            SQL = "select case " +
                  " when exists( " +
                  "  SELECT 1 " +
                  "  FROM Sys.columns c " +
                  " WHERE c.[object_id] = OBJECT_ID('dbo.Municipality')" +
                  "  AND c.name = 'AmountTypeLabel'" +
                  ")" +
                  " then 1 " +
                  " else 0 " +
                  " end ";
            DT = Conn.ExecuteDT(SQL);
        }
        catch (Exception ex)
        {
            throw new Exception("Unable to get Tables", ex);
        }
        return DT;
    }
h7wcgrx3

h7wcgrx31#

对于现有代码,您可以通过使用下面的函数获取值,并在另一个函数中使用它:

if(DT.Rows[0][0].ToString() == "1")
 //Do Something

或者你可以用 SQL Alias 在sql查询中,如下所示:

" end AS ColumnExists";

然后你可以在其他函数中引用这个。下面的示例代码段-

if(DT.Rows[0]["ColumnExists"].ToString() == "1")
    //Do Something
``` `On a side note` 如果要求只取 `1 or 0` 然后使用 `ExecuteScalar` 正如matteo1010在评论中提到的。

var columnExists = cmd.ExecuteScalar();
if(columnExists.ToString() == "1")
//Do Something

相关问题