Мне нужно удалить все значения ниже определенной суммы

Я пытаюсь удалить все значения в CallAmt ниже $51.

Я получаю сообщение об ошибке 8114 при выполнении следующего запроса.

Думаю, мне нужно как-то преобразовать CallAmt (varchar) в десятичный формат и удалить «$».

Любые идеи?

Select AccountName, AccountNumber, CallType, CallAmt, TradeDate, DueDate,
CASE
    WHEN CallType = 'RM' THEN 'H'
    WHEN CallType = 'CM' THEN 'H'
    WHEN CallType = 'RT' THEN 'F'
END as CallType

from dbo.EXT250

Where CallType in ('RM', 'CM', 'MD', 'RT') and AccountNumber Not Like '[29]%' and CallAmt > 50.00

Если вам нужно использовать его как число, почему вы вообще сохраняете его как varchar? Вы не можете делать математику с помощью varchars, вы не можете правильно сравнивать их как числа (как вы можете видеть), и нет необходимости хранить '$'. Сделайте красивое форматирование в интерфейсе и используйте правильные типы для хранения, и у вас не будет этих проблем.

Ken White 07.06.2018 02:57

Понятно, однако я извлекаю данные из файла, который уже был сохранен таким образом.

justin kelly 07.06.2018 03:02
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
2
2
28
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Можешь попробовать:

Select AccountName, AccountNumber, CallType, CallAmt, TradeDate, DueDate,
       (CASE WHEN CallType = 'RM' THEN 'H'
             WHEN CallType = 'CM' THEN 'H'
             WHEN CallType = 'RT' THEN 'F'
        END) as CallType
from dbo.EXT250
Where CallType in ('RM', 'CM', 'MD', 'RT') and
      AccountNumber Not Like '[29]%' and
      cast(replace(CallAmt, '$', '') as decimal(10, 4)) > 50.00;

Другие вопросы по теме