假设我在数据库中有一个十进制列。我想从java传递一个null值并在sql中将其转换为0。我已经尝试过勾选“允许空白”#39;虽然从java传递null值但是它给出了一个错误,说'#column;列不允许空值'。 SQL Server可以自动将java null值转换为0吗?我正在使用SQL Server 2014.谢谢。
答案 0 :(得分:1)
我建议添加一个INSTEAD OF INSERT Trigger:
CREATE TRIGGER IOI_MyTable ON MyTable
INSTEAD OF INSERT
AS
BEGIN
INSERT INTO MyTable
SELECT ISNULL(Col1, 0), ISNULL(Col2, 0), ...
FROM inserted
END;
GO
答案 1 :(得分:0)
来自Tyron78的回答, 我使用而不是触发器来将insert语句捕获到表中,然后使用ISNULL()将null值更改为0.
但由于我的表有很多列,而且我现在没有时间把它写下来:),我不得不将数据放在临时表中并删除标识列。
ALTER TRIGGER checkNull ON <table>
INSTEAD OF INSERT
AS
BEGIN
SELECT * INTO #tempTable FROM inserted
UPDATE #tempTable SET <column> = ISNULL(<column>,0)
ALTER TABLE #TempTable
DROP COLUMN id
INSERT INTO <table>
SELECT *
FROM #tempTable
END;
GO
但是,我会将Tyron78标记为解决方案,因为它更容易理解/可调试