2010-10-25 7 views
3

J'ai beaucoup de difficulté à écrire une instruction select pour comparer deux valeurs de type t-sql. Voilà ce que j'ai jusqu'à présent:Comment comparer les types de données d'image dans SQL Server

SELECT a.UserId, b.UserId 
FROM [dbo].[aspnet_Profile] as a inner join [dbo].[aspnet_Profile] as b on 
    (a.UserId = <some string> AND b.UserId = <some other string>) 
WHERE BINARY_CHECKSUM(a.PropertyValuesBinary) = BINARY_CHECKSUM(b.PropertyValuesBinary) 

Mais je continue de recevoir des messages d'erreur, peu importe ce que je fais à la clause WHERE. Pour la requête ci-dessus, le message d'erreur que je reçois est:

Erreur dans binarychecksum. Il n'y a pas de colonnes comparables dans l'entrée binarychecksum .

De toute façon, toute aide serait grandement appréciée. J'ai beaucoup de mal à faire quoi que ce soit avec ce type de données, pour une raison quelconque ...

BTW: J'utilise SQL Server Web (je pense qu'il est l'édition 2008) ...

Merci!

Andrew

Répondre

0

Est-ce que vous pouvez le faire? Connaître le # des messages d'erreur nous aiderait à vous aider.

+0

Salut Tim, merci pour l'idée. Le message d'erreur que je reçois avec l'instruction select ci-dessus est: – Andrew

+0

Msg 8184, niveau 16, état 1, ligne 1 Erreur dans binarychecksum. Il n'y a pas de colonnes comparables dans l'entrée binarychecksum. – Andrew

1

Vous ne pouvez pas utiliser binarychecksum sur les types d'images

BINARY_CHECKSUM ne tient pas compte des colonnes de types de données dans son calcul non comparables . Les types de données non comparables incluent le texte, ntext, image, curseur, xml et le langage commun non comparable runtime (CLR) types définis par l'utilisateur.

http://msdn.microsoft.com/en-us/library/ms173784.aspx

Il est peut-être plus facile de stocker un MD5 a avec l'image. Je ne peux pas imaginer que vous obteniez de bonnes performances en demandant un binary_checksum de toutes vos images!

+0

Merci pour le conseil, Adam. J'utilise Sql Server Management Studio, et je voulais juste comparer deux valeurs dans une table. C'est un calcul unique, et il ne fait vraiment partie d'aucun code. Y at-il un moyen de le faire dans t-sql, sans télécharger les implémentations externes de MD5? Est-ce que t-sql implémente MD5? Je ne suis pas vraiment un DBA ou quoi que ce soit ... – Andrew

Questions connexes