我已将一个大型Excel电子表格导入到我的SQL Server数据库中,并且默认情况下所有列均为varchar
数据类型。我的列(NULL
列中也有sale
个值。我想选择sale volume
格式的float (double)
作为varchar
。
我的查询如下,但仍然出现转换错误。
SELECT
[CompanyCode] AS 'Company Code',
[Sitecode] AS 'Site Code',
[Product] AS 'Product Name',
'' AS 'Tank ID',
CONVERT(DATE, [InvDay]) AS Date,
CAST([Sales] AS DECIMAL) AS 'Sale Volume',
'' AS 'Record ID'
FROM
[dbo].[2019-01]
答案 0 :(得分:0)
我对查询进行了如下修改,并且可以正常工作。
select
[CompanyCode] as 'Company Code',
[Sitecode] as 'Site Code',
[Product] as 'Product Name',
'' as 'Tank ID',
CONVERT(date, [InvDay]) as Date,
SaleV=(CASE
WHEN [Sales] ='NULL' THEN 0
WHEN [Sales] = '' then 0
ELSE
CONVERT(decimal(10,4) ,[Sales] )
END)
FROM [dbo].[2018-01]
答案 1 :(得分:0)
您可以尝试-修改查询。使用IsNull()函数来处理Null值。
select
[CompanyCode] as 'Company Code',
[Sitecode] as 'Site Code',
[Product] as 'Product Name',
'' as 'Tank ID',
CONVERT(date, [InvDay]) as Date,
CAST(ISNULL([Sales],0) as decimal(10,2)) as 'Sale Volume',
'' as 'Record ID'
From [dbo].[2019-01]
注意:上面的查询在为null的情况下将返回0.00,在为字符串的情况下将给出错误。使用下面的查询来处理字符串值,如果是字符串或为NULL,则下面的查询将返回0.00,否则将转换为小数
select
[CompanyCode] as 'Company Code',
[Sitecode] as 'Site Code',
[Product] as 'Product Name',
'' as 'Tank ID',
CONVERT(date, [InvDay]) as Date,
ISNULL(TRY_CAST([Sales] as decimal(10,2)), 0) as 'Sale Volume',
'' as 'Record ID'
From [dbo].[2019-01]