Ошибка при преобразовании varchar в плавающее в SQL Server 2012 - PullRequest
0 голосов
/ 19 марта 2019

Я импортировал большую электронную таблицу 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]

Ответы [ 2 ]

0 голосов
/ 19 марта 2019

Вы можете попробовать это - изменили ваш запрос.Использовала функцию IsNull () для обработки нулевого значения.

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]

Примечание. Приведенный выше запрос вернет 0,00 в случае нулевого значения и выдаст ошибку в случае строки.для обработки строкового значения используйте приведенный ниже запрос, приведенный ниже запрос вернет 0,00 в случае строки или NULL, в противном случае преобразуется в десятичное значение

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]
0 голосов
/ 19 марта 2019

Я изменил свой запрос следующим образом, и он работает ..

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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...