如何用存储过程填充表中的所有空值
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?