我有一个浮动列,称之为金钱。
我正在尝试将0值插入0,空字符串值应为NULL
INSERT INTO t1 (money) values ('0.00')
INSERT INTO t1 (money) values ('')
SELECT * FROM t1
这是我想要实现的结果
money
0
NULL
我尝试使用INSTEAD OF INSERT
触发器(我只使用'123'来查看满足哪个条件)
iif(CAST(money AS nvarchar) = '', NULL, iif(money < '0.0001', '123', money))
SELECT * FROM t1
money
123
123
所以我似乎无法将我的浮动列与空字符串进行比较。
但是当尝试跟随它时,事实上看起来是可能的:
CASE WHEN (money = '' THEN '456' ELSE iif(money < '0.0001', '123', money))
SELECT * FROM t1
money
456
456
这让我非常不确定SQL Server如何在内部转换这些数据类型。
答案 0 :(得分:2)
嗯,
如果将字符串值插入到浮点列中,则会尝试使用奇怪的东西。
$insert_row =mysql_query("INSERT INTO ActivityProduct (AID,Ideal) VALUES ( '". implode('),(', $_POST["act"]). "' ,'" .implode('),(', $_POST["act"])."')");
但是你真的应该花一些时间从头开始进行数据类型转换。如果有人试图将字符串插入我的float-column中,我希望调用应用程序出错...
答案 1 :(得分:1)
你可以试试这种方式
declare @valuetobeinserted varchar(20)
set @valuetobeinserted = '0.00'
insert into t1 select case when @valuetobeinserted = '' then null else @valuetobeinserted end as m
set @valuetobeinserted = ''
insert into t1 select case when @valuetobeinserted = '' then null else @valuetobeinserted end as m