Comment rechercher une image/varbinary champ pour les enregistrements qui commencent par un modèle binaire

Je suis en train d'essayer de trouver toutes les images qui ne commencent pas avec la nombre magique ff d8 ff e0 (la signature pour jpg) Selon la MSDN je devrais être en mesure d'utiliser patindex sur mes données. Cependant

SELECT TOP 1000 [cpclid]
FROM [cp]
where patindex('FFD8FFE0%', cpphoto) = 0 -- cpphoto is a column type of image

me donne l'erreur

Msg 8116, Niveau 16, État 1, Ligne 1
Argument de type de données de l'image n'est pas valide pour l'argument 2 de patindex fonction.

Quelle serait la bonne façon de trouver les enregistrements qui ne correspondent pas au nombre magique de ff d8 ff e0?

Mise à JOUR:

Voici un lien pour tester toutes les suggestions que vous avez.


j'ai Ross solution a fonctionné à la fin avec quelques ajustements sur la requête.

SELECT [cpclid]
  FROM [cp]
where convert(varchar(max), cast(cpphoto as varbinary(max))) not like convert(varchar(max), 0xFFD8FFE0 ) + '%'

J'ai trouvé une solution encore meilleure, voir ma réponse.

OriginalL'auteur Scott Chamberlain | 2011-08-01