Предложение IF или оператор CASE в SQL Server - PullRequest
1 голос
/ 27 июня 2011

Как мне сделать что-то вроде этого кода ниже:

 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

Ответы [ 2 ]

2 голосов
/ 27 июня 2011
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, конечно

1 голос
/ 27 июня 2011

Попробуйте это:

 SELECT ..., c.is_nullable,
        CASE WHEN u.CONSTRAINT_TYPE = 'PRIMARY KEY' THEN 'primary key'
        ELSE '' 
        END AS KeyType
FROM INFORMATION_SCHEMA.COLUMNS as c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...