如何更新sql server中整个表中的空值列,而不使用列名? [英] how can we update null value columns in whole table in sql server, without using column name?
本文介绍了如何更新sql server中整个表中的空值列,而不使用列名?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
您好,
如何在不使用列名的情况下更新sql server中整个表中的空值列?
我想更新表中的所有空值列,我的表中有很多列,那么,我们可以在不使用列名的情况下更新所有空值列吗?
请帮帮我。
提前致谢。
Ankit Agarwal
软件工程师
Hello,
how can we update null value columns in whole table in sql server, without using column name?
I want to update all null value columns in a table, many columns in my table, So, can we update all null value columns without using column name?
Please help me.
Thanks in advance.
Ankit Agarwal
Software Engineer
推荐答案
因为你必须使用动态查询...
尝试一些像这样的东西......
在下面的示例中,我只更新数据类型为nvarchar的列......你可以这样做..
For That u have to Use Dynamic Queries...
Try Some thing Like this...
In this below example am updating only columns of datatype nvarchar... u can do like this..
Create Table Temp (Item Nvarchar(100), Col1 Nvarchar(10),Col2 Nvarchar(40))
Insert into Temp
Select 'Item1',Null,'Test1' Union All
Select 'Item1',Null,Null Union All
Select 'Item1',Null,'Test1'Union All
Select 'Item1',Null,'Test1' Union All
Select 'Item1','Test1',Null
Declare @ColumnName Varchar(100),@Pos Int,@PrevPos Int=0,@UpdatedValue varchar(100),
@Query varchar(1000),@TableName Varchar(40)
Select @TableName= 'Temp',@UpdatedValue='''Test'''
While 1>0
Begin
Set @ColumnName=''
Select Top(1) @ColumnName = COLUMN_NAME,@Pos= ORDINAL_POSITION
From INFORMATION_SCHEMA.COLUMNS
Where TABLE_NAME=@TableName and IS_NULLABLE ='YES' and DATA_TYPE ='nvarchar'
and ORDINAL_POSITION > @PrevPos
If @ColumnName =''
Break;
Select @Query= 'Update ' + @TableName + ' Set ' + @ColumnName + ' = ' +
@UpdatedValue +' Where ' + @ColumnName +' is null' , @PrevPos=@Pos
Exec(@Query)
End
Select * from Temp
Drop Table Temp
输出:
Output:
Item Col1 Col2
----- ----- -------
Item1 Test Test1
Item1 Test Test
Item1 Test Test1
Item1 Test Test1
Item1 Test1 Test
这篇关于如何更新sql server中整个表中的空值列,而不使用列名?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文