如果我插入多个空格或' '将在SQL Server中替换为NULL?

时间:2015-01-09 03:41:48

标签: sql sql-server

我想使用' insert'功能但有空的空间或' ',但我不知道如何制作它?如果我想创建多个空白空间并将自动替换为NULL? 例如

INSERT INTO databaseName (Column1, Column2, Column3, Column4) 
       VALUES ('Name', '','','Date')

1 个答案:

答案 0 :(得分:0)

问题不是很清楚,但我想我明白你在问什么。

通常我只使用NULL关键字:

INSERT INTO databaseName (Column1, Column2, Column3, Column4) 
   VALUES ('Name', NULL, NULL,'Date')

但是我觉得这些字符串的值是用代码构建的,并且当它们是空的时候以及当它们不知道时你都不知道。如果它们是空的,那么您在数据库中更喜欢NULL。在这种情况下,Sql Server包含NULLIF()函数:

INSERT INTO databaseName (Column1, Column2, Column3, Column4) 
   VALUES ('Name', NULLIF('',''), NULLIF('',''),'Date')
但是,我担心,这意味着您将以易受SQL注入攻击的方式构建此代码。确保您没有使用字符串连接将值放入查询中。如果您这样做,您会发现您的应用的数据库被黑客入侵。希望您使用查询参数,避免sql注入攻击。如果这样做,您的SQL代码将如下所示:

INSERT INTO databaseName (Column1, Column2, Column3, Column4) 
   VALUES ('Name', NULLIF(@Column2Parameter,''), NULLIF(@Column3Parameter,''),'Date')

您也可以使用触发器处理此问题,但我不想依赖触发器,除非我绝对不得不这样做。