Robymon Ответов: 1

Как сравнить два изображения в SQL server


Мне нужно сравнить изображение, которое уже вставлено в столбец типа данных Image, и объект Image, который прошел через хранимую процедуру SQL, можно ли сравнить через SQL-скрипт?

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

Я попробовал использовать приведенный ниже скрипт, но он не работает

создать таблицу foo
(
img изображение
)
идти

выбирать *
из фу а, фу б
Где convert(varbinary,a.img) = convert(varbinary,b.img)

RedDk

Конечно (хорошая идея, и она есть в моем рабочем хит-листе ...).

Вы можете использовать правую, левую, среднюю и т. д... любой строковый компаратор ... после преобразования SELECT возвращается к правильному типу. Вы говорите о типе обработки "сравнить" для анализа или "найти в str", да?

Используйте CONVERT или CAST. Подробности смотрите в разделе BOL.

MadMyche

I;d быть склонным добавить еще один столбец для контрольной суммы; и иметь функцию insert также вставить контрольную сумму файлов.
Тогда сервер БД будет использовать меньше ворчания для выполнения запроса, потому что вы можете использовать только пару гораздо более коротких строк

1 Ответов

Рейтинг:
1

Richard Deeming

Вы не указали длину в своем отчете. CONVERT вызов. Согласно с документация[^], данные будут усечены до первых 30 байт.

Указывать max как длина, так и сравнение должно работать:

SELECT *
FROM foo As a INNER JOIN foo As b
ON CONVERT(varbinary(max), a.img) = CONVERT(varbinary(max), b.img);

Если это не так, тогда вам нужно будет объяснить, в чем проблема.

NB: Записи будут совпадать только в том случае, если байты точно совпадают. Если один байт отличается, изображения считаются разными, даже если они выглядят одинаково.