我有一个表,我不能修改,我需要做两列之间的比较。
第一列 TtlPrice
有一个 money
数据类型
第二个 AuthComments
有一个 varchar(max)
数据类型
我们正在表格中输入一条评论 AuthComments
列,并在末尾添加“$1.00”(或我们授权的任何价格)。我想确保 TtlPrice
不高于市场上的价格 AuthComment
现场。
以下是数据示例:
OrderNo | TtlPrice | AuthComment
--------+----------+----------------------
12345 | 51.74 | Auth by Sue- $62.84
以下是我当前的查询:
SELECT
OrderNo,
TtlPrice,
AuthComment
FROM
tableA
WHERE
(CAST(TtlPrice AS VarChar) > CAST(SUBSTRING(AuthComments,
CHARINDEX('$', AuthComments) + 1,
LEN(AuthComments) - CHARINDEX('$', AuthComments)) AS varchar))
以上基于数据的结果应该是0,因为 TtlPrice
小于 AuthComment
价格。但事实并非如此,它只能产生一行结果。我认为这不是比较 varchar
正确地说,但是试图转换为任何类型的数字(int、money等)都会引发转换错误。建议?
1条答案
按热度按时间camsedfj1#
尝试执行以下操作:
如果authcoment中的值总是小于ttlprice中的值,则上述查询应返回零行。