如何用存储过程填充表中的所有空值

Posted

技术标签:

【中文标题】如何用存储过程填充表中的所有空值【英文标题】:How To Fill All Null Values In Table with Stored Procedure 【发布时间】:2014-01-15 23:26:24 【问题描述】:

感谢您对此的评论

我很容易遇到问题,我知道你们会解决的

我有一个 14 列的表,其中 8 个列是数字(int、biging、numeric(18,0))和 其他 cols 数据类型为文本值,例如 char(10)、varchar(255)、Nvarchar(4000) 该表由相同的随机值填充,并且在所有列(ID除外)中都有很多空值。

我想创建一个或多个存储过程,将数字列中的所有空单元格填充为 0 和 字符串列中的所有空值都为“无值”。

如果这个 SP 将返回所有列中所有空值的计数,那就太棒了

非常感谢

【问题讨论】:

这是作业题吗?你能提供一个你想要的输出的例子吗? ***.com/questions/12091272/… 通常最好保持数据干净并在查询时进行此类替换。 【参考方案1】:

您可以在存储过程中使用循环,但最好的方法是检查所有列的空值,因为任何列都可能具有不同的数据类型。

我希望这会有所帮助。

【讨论】:

感谢用户...。你说得对,这张桌子有一些类型,我忘记了【参考方案2】:
Update Table1
set col1='0'
where co1 is null

等等……

【讨论】:

假设col1是一个数字列(“将数字列中的所有空单元格填充为0”),为什么你使用单引号作为数字/整数常量:'0'?跨度> 【参考方案3】:

您可以按上述方式进行更新,但如果您需要将默认字段设为 0,那么您应该在创建表时使用默认值

CREATE TABLE dbo.Something
(
    id               INT IDENTITY(1, 1),
    col1        INT DEFAULT 0
)

但如果它的遗留代码比插入 proc 上的代码你可以像这样使用

CREATE PROCEDURE [dbo].[spa_CRUDSomething]
    @flag CHAR(1)
   ,  @col1 INT = 0
AS 

通常问题不在于进行修复,而在于修复修复的方式

【讨论】:

以上是关于如何用存储过程填充表中的所有空值的主要内容,如果未能解决你的问题,请参考以下文章

我如何用JAVA调用存储过程取得 serveroutput?

oracle 存储过程中如何用ROWID

如何用存储过程生成唯一UUID

使用 Oracle 存储过程中的 refcursor 值填充 C# 数据表

使用存储过程中的表名填充数据集

存储过程将不同表中的值相乘