У меня есть таблица, которую я не могу изменить, и мне нужно провести сравнение двух столбцов.
- Первый столбец
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
должным образом, но попытка преобразовать в какие-либо числа c (int, money, et c) выдает ошибку преобразования. Предложения?