对于int,空字符串更改为0

时间:2016-07-15 06:46:41

标签: sql sql-server

非常独特..... 并且无权更改排序规则

我创建了一个表

CREATE TABLE BT_INPUT_CHK
(
    [ID] [int] NOT NULL,
    [RELID] [int] NULL,
    [OPNO] [varchar](35) NULL
)

当我插入数据时

INSERT ZBT_INPUT_CHK ([ID],[RELID],[OPNO])
VALUES('1000002','','')

问题从这里开始。 对于varchar空字符串插入相同,但对于int空字符串正在更改为0.

整理:Latin1_General_CI_AS

任何人都可以帮助我。 感谢

3 个答案:

答案 0 :(得分:0)

当空sting隐式转换为INT时,它会转换为ZERO。如果需要将其设置为NULL,则使用NULLIF函数。

DECLARE @RELID VARCHAR(10) = ''

INSERT ZBT_INPUT_CHK ([ID],[RELID],[OPNO])
VALUES('1000002',NULLIF(@RELID,''),'')

答案 1 :(得分:0)

Check This ..您将清楚地了解如何将空字符串插入数字列

INSERT into BT_INPUT_CHK ([ID],[RELID],[OPNO]) VALUES('1000007',NULL,'');

答案 2 :(得分:0)

试试这个,

    CREATE TABLE #BT_INPUT_CHK
(
    [ID] [int] NOT NULL,
    [RELID] [int] NULL,
    [OPNO] [varchar](35) NULL
)

INSERT #BT_INPUT_CHK ([ID],[RELID],[OPNO])
VALUES('1000002',(case when cast('' as varchar(10))='' then 'Error' else '' end),'')