SQL,如果列为空,则添加一个空列

时间:2019-02-06 13:29:00

标签: sql sql-server

我希望能够检查是否有一列,如果没有,那么我们只想添加一个空列,

    IF Users.[parties] = '' OR NULL
        BEGIN
            SELECT [parties] 
            FROM Users 
            UNION 
            SELECT 'Empty'
        END

Users.[parties],我们检查是否有一列,但如果没有,则会导致崩溃,在这种情况下,我认为最好只添加一个空白名称为Empty的列,但我无法使代码正常工作。

如果我们有列,结果将类似于...

ColumnsName    ColumnAge
data             33
data             22

但是当没有一列时,它会崩溃,理想情况下,我希望它只有一个空列,

EmptyColumn

4 个答案:

答案 0 :(得分:1)

下面的代码检查表中是否存在一列,在本例中,该列的名称为columnName,表的名称为tableName

IF COL_LENGTH('schemaName.tableName', 'columnName') IS NOT NULL
    BEGIN
        -- Column exists
       SELECT [parties] FROM Users
    END
ELSE 
    BEGIN
        -- Column does not exists
        SELECT 'Empty'[parties]
    END

答案 1 :(得分:0)

假设如果未找到任何行,则要选择一行,则可以使用此查询:

SELECT [parties] FROM Users 
UNION 
SELECT 'Empty' WHERE NOT EXISTS (SELECT * FROM Users)

答案 2 :(得分:0)

我想你只是想要

IF EXISTS(
           SELECT 1 
           FROM Sys.Columns 
           WHERE Name = N'parties'
                 AND 
                 Object_ID = Object_ID(N'SchemaName.Users')
         )
BEGIN
  SELECT parties
  FROM Users;
END
ELSE
BEGIN
  SELECT 'EmptyColumn' EmptyColumn -- or NULL EmptyColumn 
  FROM Users; 
END

答案 3 :(得分:0)

我将尝试以下操作:(我不确定它是否有效)

select case when ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) =0 --count rows
          then 'empty'  -- if 0 output empty
          else parties end as parties --else ouputs the result
from your_table

这是一种更“标准”的方法

CREATE VIEW user_filled as
SELECT [parties] 
FROM Users 
UNION 
SELECT 'EMPTY'

以及当您查询它时(如果需要->在count(*)

select count(*) 
from user_filled
where parties <> 'EMPTY'

加入时

select *
from user_filled join other_table 
      on (user_filled <> 'EMPTY and userfilled.key= other_table.key)

注意:将子句放入ON中,以便在进行连接之前将其过滤掉