首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL替换所有空值

SQL替换所有空值
EN

Stack Overflow用户
提问于 2011-10-28 22:45:18
回答 9查看 45.6K关注 0票数 14

我有一张大桌子,里面有一些空的东西。从带有0而不是NULL的表中进行选择最简单的方法是什么?

或者,如果没有简单的方法可以做到这一点,我愿意将表中的所有空值物理地替换为0。

有很多列,我不想用ISNULL( FieldName ,0)这样的东西来遍历每一列作为FieldName。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2011-10-28 22:52:10

正如这里的许多人所说的,最好的方法是ISNULL(),但是,如果您想要一种简单的方法来生成所有这些ISNULL(),请使用以下代码:

代码语言:javascript
复制
SELECT 'ISNULL([' + COLUMN_NAME + '], ' + 
  CASE 
    WHEN DATA_TYPE = 'bit' THEN '0'
    WHEN DATA_TYPE = 'int' THEN '0'
    WHEN DATA_TYPE = 'decimal' THEN '0'
    WHEN DATA_TYPE = 'date' THEN '''1/1/1900'''
    WHEN DATA_TYPE = 'datetime' THEN '''1/1/1900'''
    WHEN DATA_TYPE = 'uniqueidentifier' THEN '00000000-0000-0000-0000-000000000000'
    ELSE '''''' -- everything else get's an empty string
  END + ') AS [' + COLUMN_NAME + '],'
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'TableName'

这将使单调乏味的工作变得简单得多,然后您只需编辑输出以说明各种字段类型(int、varchar、date等)

编辑:使用默认值记帐各种数据类型..

票数 23
EN

Stack Overflow用户

发布于 2011-10-28 22:49:06

实际上,你有两个选择

代码语言:javascript
复制
ISNULL(yourColumn,0) AS columnName

或者实际修复问题并将所有空数据更改为0

代码语言:javascript
复制
UPDATE table
SET column = 0
WHERE
column IS NULL    -- remember "column = NULL" always equates to NULL!

当你这样做的时候,不要忘了哪里或者所有的东西都会变成0!

票数 12
EN

Stack Overflow用户

发布于 2011-10-28 22:46:32

您必须手动指定SELECT语句中的每一列,并使用ISNULL()函数:

代码语言:javascript
复制
SELECT ISNULL(columnName, 0), ... yes all of them
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7930810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档