waleed_akre Ответов: 1

Исправьте мой SQL server 2008


Ошибка преобразования типа данных nvarchar в числовой.

Что я уже пробовал:

select MAX(cast(number_qamema as decimal(15,4))) as NB_QE from DB_DAEN where name_costomer1='waleed'  group by name_costomer1

PIEBALDconsult

Нам нужно посмотреть некоторые образцы данных.

CHill60

Подсказка: не храните числа (или даты) в виде столбцов varchar. Используйте правильный тип столбца.

1 Ответов

Рейтинг:
5

an0ther1

Ошибка вызвана вашими данными - столбцом number_qanema не может быть преобразовано в десятичное значение.
Измените свой запрос следующим образом;

SELECT
    MAX(CAST(number_qamema AS DECIMAL(15,4))) AS NB_QE 
FROM
    NB_QE
WHERE
    ISNUMERIC(number_qamema) = 1
    AND
    name_costomer1 = 'waleed'
GROUP BY
    name_costomer1


с уважением


Richard Deeming

Будьте осторожны с ISNUMERIC - он рассматривает некоторые строки как числовые, которые не могут быть приведены к числу.

Кроме того, в зависимости от данных вы все равно можете столкнуться с ошибками. В некоторых случаях SQL может выбрать для оценки CAST до то WHERE пункт.

Для SQL 2012 и выше, TRY_PARSE[^] было бы лучшим вариантом:

SELECT
    name_costomer1,
    MAX(TRY_PARSE(number_qamema As decimal(15, 4))) As NB_QE
FROM
    NB_QE
GROUP BY
    name_costomer1
;

an0ther1

Спасибо за информацию, Ричард, очень ценю.