【问题标题】:IF clause or CASE statement in SQL ServerSQL Server 中的 IF 子句或 CASE 语句
【发布时间】:2011-06-27 19:25:10
【问题描述】:

我该如何执行以下代码:

 SELECT c.TABLE_NAME, c.COLUMN_NAME, c.DATA_TYPE, c.Column_default, c.character_maximum_length, c.numeric_precision, c.is_nullable,
 if(u.CONSTRAINT_TYPE = 'PRIMARY KEY')
 Begin
print 'primary key'
 end
else
begin
print ''
end
 FROM INFORMATION_SCHEMA.COLUMNS as c
 LEFT OUTER JOIN information_schema.CONSTRAINT_table_USAGE as u
 ON c.table_name = u.table_name
 Order by table_name

【问题讨论】:

    标签: sql-server if-statement case


    【解决方案1】:
    SELECT
        c.TABLE_NAME, c.COLUMN_NAME, c.DATA_TYPE, c.Column_default,
        c.character_maximum_length, c.numeric_precision, c.is_nullable,
        case
         when u.CONSTRAINT_TYPE = 'PRIMARY KEY' then 'primary key'
         else ''
        end as pk
     FROM INFORMATION_SCHEMA.COLUMNS as c
     LEFT OUTER JOIN information_schema.CONSTRAINT_table_USAGE as u
     ON c.table_name = u.table_name
     Order by table_name
    

    您当然不能在 SELECT 中打印

    【讨论】:

    • Msg 102 - 你错过了以 WHEN 开头的那一行。
    【解决方案2】:

    试试这个:

     SELECT ..., c.is_nullable,
            CASE WHEN u.CONSTRAINT_TYPE = 'PRIMARY KEY' THEN 'primary key'
            ELSE '' 
            END AS KeyType
    FROM INFORMATION_SCHEMA.COLUMNS as c
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-10
      • 2021-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-30
      • 2013-12-06
      • 1970-01-01
      相关资源
      最近更新 更多