我希望能够检查是否有一列,如果没有,那么我们只想添加一个空列,
IF Users.[parties] = '' OR NULL
BEGIN
SELECT [parties]
FROM Users
UNION
SELECT 'Empty'
END
Users.[parties]
,我们检查是否有一列,但如果没有,则会导致崩溃,在这种情况下,我认为最好只添加一个空白名称为Empty
的列,但我无法使代码正常工作。
如果我们有列,结果将类似于...
ColumnsName ColumnAge
data 33
data 22
但是当没有一列时,它会崩溃,理想情况下,我希望它只有一个空列,
EmptyColumn
答案 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
中,以便在进行连接之前将其过滤掉