在Select中使用T-SQL函数,只返回有值的列。
在Select中使用T-SQL函数,只返回有值的列。
我有一个查询,它只返回带有值的列。我该如何将其添加到一个函数中,以便我可以在任何查询中使用它?它会成为where子句中的一个函数吗?
创建表test1
(
s_no int not null,
name varchar(10) not null,
address varchar(10) null,
emailid varchar(100) null
)
将数据插入test1表中 (s_no, name)
values (1,'A'),(2,'B'),(3,'C')
声明变量 @column_list varchar(8000),
@counter int
将 @column_list 设置为空字符串
将 @counter 设置为0
当syscolumns表中的最大列编号大于 @counter 时执行以下操作
begin
将 @counter 设置为 syscolumns 表中 id = object_id('test1') 和 isnullable= 0 的最小列编号
将 @column_list 设置为 @column_list + ',' + (Select name from syscolumns where id = object_id('test1') and isnullable= 0 and colid = @counter)
end
将 @column_list 设置为从第2个字符开始,长度为len(@column_list)的子字符串
声明变量 @sql varchar(8000)
将 @sql 设置为 'select ' + @column_list + ' from test1'
打印 @sql
执行 @sql
从 [dbo].[test1] 表中选择所有列