T-SQL如果' '输入为空

时间:2017-07-16 19:48:55

标签: tsql sql-server-2012

我的网络应用程序允许更换令牌,因此我的SQL INSERT查询看起来像这样:

INSERT INTO mytable (Col1, Col2, Col3)
VALUES ('[Col1Value]', '[Col2Value]', '[Col3Value]')

网络应用正在使用输入到表单字段的输入替换方括号[Col1Value]内的内容。

问题是,如果输入字段为空,则此查询仍然只插入' '空格,因此不会将该字段视为null

我尝试使用SQL的默认值/绑定部分,以便null的所有列都具有默认值--但我的查询插入空格' '正在制作它,因此SQL不会触发默认值操作,它仍然显示空白而不是我想要的默认值--

关于如何解决此问题的任何想法并确保将' '插入为null而不是空格或空格,以便它将使用我的默认值{{触发SQL替换null 1}}

1 个答案:

答案 0 :(得分:1)

不容易......

您是如何插入值的?如果你从字面上创建这些语句,你就会遇到 SQL注入的危险领域...使用参数!

一种方法可能是通过存储过程插入,另一种方法是而不是TRIGGER ,第三种方法使用事实,字符串长度不计算尾随空白:

SELECT LEN('')   --returns 0
      ,LEN('  ') --returns 0 too

您可以在以下表达式中使用它:

CASE WHEN LEN(@YourInputValue)=0 THEN NULL ELSE @YourInputValue END