Sql 选择值为NA的列
如何选择表中只包含所有行的特定值的列?我正在尝试查找这些列,以更新那些值为Sql 选择值为NA的列,sql,sql-server,null,sql-server-2012,ssms,Sql,Sql Server,Null,Sql Server 2012,Ssms,如何选择表中只包含所有行的特定值的列?我正在尝试查找这些列,以更新那些值为NULL的值。在我的专栏中,我有各种各样的值,包括NA 我正在使用SQLServer2012 我试过这样做:thsi只给我列名称。我可以为值为“NA”的列添加此条件吗 SELECT COLUMN_NAME AS NAMES,COLUMN_DEFAULT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'dbo' AND TABLE_NAME =
NULL
的值。在我的专栏中,我有各种各样的值,包括NA
我正在使用SQLServer2012
我试过这样做:thsi只给我列名称。我可以为值为“NA”的列添加此条件吗
SELECT COLUMN_NAME AS NAMES,COLUMN_DEFAULT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = 'ABC'
我是
SQL
的初学者。正在尝试找出如何执行此操作。如果列的最小值等于最大值,则该列包含相同的值:
Select
case when min(col1) = max(col1) then 1 else 0 end as Col1IsSame,
case when min(col2) = max(col2) then 1 else 0 end as Col2IsSame,
...
from Table
使用动态查询:
declare @s nvarchar(max) = 'select '
select @s = @s + 'case when min(' + COLUMN_NAME + ') = max(' +
COLUMN_NAME + ') then 1 else 0 end as ' + COLUMN_NAME + ','
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = 'Table'
Set @s = substring(@s, 1, len(@s) - 1) + ' from Table'
exec(@s)
请尝试此查询
DECLARE @SQLQUERY NVARCHAR(MAX)
declare @tableName varchar(50)
DECLARE @NAME VARCHAR(50)
Declare @ParamDefinition AS NVarchar(2000)
Set @ParamDefinition = '@OIM VARCHAR(20)'
SELECT NAME
FROM sys.objects
WHERE [object_id]=@OIM
set @tableName= (SELECT NAME
FROM sys.objects
WHERE [object_id]=@OIM)
SET @NAME=(SELECT C.NAME
FROM sys.columns c
JOIN
sys.tables t ON c.object_id = t.object_id
WHERE c.name in (select distinct name
from sys.columns
where object_id=@OIM))
SET @SQLQUERY = ''
SELECT @SQLQUERY = @SQLQUERY + 'UPDATE ' + @tableName + ' SET ' + @NAME + ' = NULL WHERE ' + @NAME + ' = NA ; '
PRINT @SQLQUERY
Execute sp_Executesql @SQLQUERY , @ParamDefinition, @OIM
end
真的我会用你喜欢的语言创建一个快速的控制台应用程序this@Shyam你能告诉我们你试过什么吗?我能知道为什么上面有-1吗?你想用空值替换列为'NA'?@Dudi用值NA替换列为空值。很多都是数据类型的整数列。@Giorgi,谢谢。有没有一种方法可以在不传递每个列名的情况下完成?此外,在我的专栏中,我有各种各样的价值观,包括NA@giorgi,这是一个绝妙的解决方案!我期待着学习动态SQL。