Mysql 我需要删除低于一定数量的所有值

Mysql 我需要删除低于一定数量的所有值,mysql,sql,Mysql,Sql,我正在尝试删除CallAmt下面$51中的所有值 运行下面的查询时,我收到一条错误消息8114 我想我需要以某种方式将CallAmt(varchar)转换为十进制,并删除“$” 有什么想法吗 Select AccountName, AccountNumber, CallType, CallAmt, TradeDate, DueDate, CASE WHEN CallType = 'RM' THEN 'H' WHEN CallType = 'CM' THEN 'H' WHE

我正在尝试删除
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
您可以尝试:

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;

如果您需要将其用作数字,那么首先为什么要将其存储为varchar?您无法使用varchar进行数学运算,无法将它们作为数字进行正确比较(如您所见),并且不需要存储“$”。在前端做一些漂亮的格式化工作,使用适当的类型进行存储,你就不会有这些问题。明白了,不过我是从一个已经以这种方式存储的文件中提取数据的。