Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 强制计算列为int_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 强制计算列为int

Sql 强制计算列为int,sql,sql-server,tsql,Sql,Sql Server,Tsql,我用[TankNumId]作为计算列创建了这个表 如何将数据类型强制设置为int。它保持设置为nvarchar,这是列[TankNum]的数据类型 [TankNum]列中的值为100-1100-2100-3等。因此,我使用computed列将“-”转换为“.”,以便它可以是[TankNumId]列中的有效int。有什么建议吗 CREATE TABLE [dbo].[tblTank9]( [Id] [int] IDENTITY(1,1) NOT NULL, [TankNumId] AS (rep

我用[TankNumId]作为计算列创建了这个表

如何将数据类型强制设置为int。它保持设置为nvarchar,这是列[TankNum]的数据类型

[TankNum]列中的值为
100-1100-2100-3等
。因此,我使用computed列将“-”转换为“.”,以便它可以是[TankNumId]列中的有效int。有什么建议吗

CREATE TABLE [dbo].[tblTank9](
[Id] [int] IDENTITY(1,1) NOT NULL,
[TankNumId]  AS (replace([TankNum],'-','.' )) PERSISTED NOT NULL,
[TankNum] [nvarchar](10) NULL,
[CompanyName] [nvarchar](30) NULL,
[Ft] [float] NULL,
[Inch] [float] NULL,
[HFt] [smallint] NULL,
[HIn] [smallint] NULL,
[HFx] [smallint] NULL,
[GaPt] [char](100) NULL,
 CONSTRAINT [PK_tblTank9] PRIMARY KEY CLUSTERED 
(
[TankNumId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO
函数接收
nvarchar
并返回
nvarchar

由于
100.1
不是整数,您需要将结果强制转换为浮点

SELECT CAST(YourVarcharCol AS float) FROM Table
SELECT CONVERT(float, YourVarcharCol) FROM Table

100.1
也不是整数吗OK你打算在tankNumID上做数学题吗?如果没有,则将其存储为nvarchar(X)。没有理由将值存储为数字,因为它看起来像一个数字。您不希望将zipcode存储为数字或电话。为什么?因为你永远不会对它们做数学运算。如果没有数学,则将其存储为字符串;除非是约会。日期总是日期。若你们要对它进行数学运算,那个么将它存储为数字(X,Y),其精度和比例必须能够支持你们的特定数据。Float/Double只是自找麻烦。我不明白为什么你首先需要int或任何数值。nvarchar对我来说似乎是正确的数据类型。不。。。不浮动。。。使用数字(10,2)(或任何精度,需要刻度)float&double将使用我认为具有特定期望精度的十进制值。我可以创建一个新表,以便预先将其转换为该值吗?