Tsql T-SQL:在使用表及其视图时禁用默认浮点舍入

Tsql T-SQL:在使用表及其视图时禁用默认浮点舍入,tsql,Tsql,你好 当我想使用表的视图向表中插入数据时,这里是浮点舍入的问题。 数据需要作为varchar存储在表中 表: 视图: 数据,即我使用其视图从表中选择的数据,必须具有float类型(fieldfloatfield)。 我不能将数据插入到表中,如果需要,我需要使用它的视图。所以,我不能(这是任务规则)直接将数据插入到表中,只使用视图。我创建触发器以插入数据: CREATE TRIGGER [dbo].[tr_TestTableFloatInsert] ON [dbo].[TestTable

你好
当我想使用表的视图向表中插入数据时,这里是浮点舍入的问题。 数据需要作为varchar存储在表中
表:

视图:

数据,即我使用其视图从表中选择的数据,必须具有float类型(fieldfloatfield)。 我不能将数据插入到表中,如果需要,我需要使用它的视图。所以,我不能(这是任务规则)直接将数据插入到表中,只使用视图。我创建触发器以插入数据:

CREATE TRIGGER [dbo].[tr_TestTableFloatInsert] 
   ON  [dbo].[TestTableFloat] 
   INSTEAD OF INSERT
AS 
BEGIN
    SET NOCOUNT ON;

insert into TestTableFloat_E (FloatField)
select FloatField
FROM INSERTED
操作:我尝试在视图(TestTableFloat)的帮助下将数据插入TestTableFloat_E(表),触发并将数据插入表中。 问题:当我插入浮点数时,我有舍入,我不需要:

insert TestTableFloat (FloatField)
select 123.123456
我在TesttableFloat表中有123123。我需要它不圆,我必须有123.123456
它可以是什么?

您可以让它存储更多的数字,但它将切换到科学记数法:

CREATE TRIGGER [dbo].[tr_TestTableFloatInsert] 
   ON  [dbo].[TestTableFloat] 
   INSTEAD OF INSERT
AS 
BEGIN
    SET NOCOUNT ON;

insert into TestTableFloat_E (FloatField)
select CONVERT(varchar(100),FloatField,2)
FROM INSERTED
END
最终将
1.23123456000000e+002
存储到表中

发件人:

当表达式为float或real时,样式可以是下表中显示的值之一。其他值处理为0

0(默认值)
最多6位数字。适当时,在科学记数法中使用

1
始终为8位数字。总是在科学记数法中使用

2
始终为16位数字。总是在科学记数法中使用


插入通常的警告,说明期望浮点数和浮点数的十进制表示形式总是完全可转换以及使用不适当的数据类型存储特定类型的数据是徒劳的



用于此数据的最佳数据类型似乎是具有适当比例和精度的
decimal
,这两种类型都不是您正在使用的。但你声称这些是“必需的”类型。例如,如果视图使用十进制而不是浮点,则存储的
varchar(100)
值与预期值完全相同。

。。。我以为没人明白,我写了什么,想要什么<代码>选择转换(varchar(100),FloatField,2)我需要什么。谢谢
insert TestTableFloat (FloatField)
select 123.123456
CREATE TRIGGER [dbo].[tr_TestTableFloatInsert] 
   ON  [dbo].[TestTableFloat] 
   INSTEAD OF INSERT
AS 
BEGIN
    SET NOCOUNT ON;

insert into TestTableFloat_E (FloatField)
select CONVERT(varchar(100),FloatField,2)
FROM INSERTED
END