2010-11-02 16 views
1

J'ai deux ensembles de valeurs hexagonales en tant que tel:Pourquoi ne puis-je pas comparer ces valeurs hexadécimales?

---------- ------------------ 
0x0062EB3F 0x000000020062EB3F 
0x0062EF17 0x000000020062EF17 
0x0062EF30 0x000000020062EF30 
0x0062EF38 0x000000020062EF38 
0x0062EF3B 0x000000020062EF3B 
0x0062EF3F 0x000000020062EF3F 
0x0062EF40 0x000000020062EF40 

La seule différence est les zéros, ce sont tous le même numéro que celui à côté de lui. Alors pourquoi MSSQL ne les comptera-t-il pas comme étant égaux? Est-ce que je manque quelque chose?

+2

Comment les comparez-vous? Quel type sont ces colonnes? –

+0

Les utiliser dans une jointure –

+3

Juste repéré les 2 supplémentaires là-bas - cela répondra probablement à ma question, désolé les gars. –

Répondre

8

En fait, ils sont différents pour plus que les zéros:

0x  0062EB3F 
0x000000020062EB3F 
      * 
      * 

Il y a un là-dedans ..... extra « 2 » de sorte qu'ils sont pas même!

5

D'abord, les chiffres que vous avez énumérés dans votre question ne sont pas les mêmes:

0x0062EB3F != 0x000000020062EB3F 
         ^

avis, le numéro sur le droit a un 2

supplémentaire, cela dépend aussi de quel type de Data SQL Server utilise pour stocker les numéros. S'ils sont stockés comme INT ou BIGINT, alors 0x0001 est équivalent à 0x1, mais s'ils sont stockés comme VARBINARY par exemple - alors 0x0001 n'est pas le même que 0x1.