Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 选择值为NA的列_Sql_Sql Server_Null_Sql Server 2012_Ssms - Fatal编程技术网

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。