|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Inscription : février 2008 Messages : 246 ![]() |
Bonjour tout le monde, J'ai crée une requête pour comparer les données de 2 colonne ayant le même type Text (Il s'agit en fait de la même structure de la base et juste les données sont modifiées).
La requête que j'ai utilisée est Code :
Est ce que quelqu'un pourrait m'éclaircir cette situation et m'aide à résoudre ce problème. Merci d'avance pour votre collaboration |
||
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 950 ![]() |
Normal les types LOB comme Text, Ntext et IMAGE ne sont pas relationnel. Donc certaines opérations sont impossibles.
évitez de stocker des données que vous voulez manipuler sur le plan relationnel dans de telles colonnes. A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : février 2008 Messages : 246 ![]() |
Merci pour votre réponse.
Mais je n'ai pas le choix car il s'agit d'une base de données client et je dois détecter les mises à jour effectuées entre 2 bases. De plus, la même requête m'affiche d'autres différences entre plusieurs enregistrements mais pas cet enregistrement qui contient malgré tout une différence. |
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 950 ![]() |
Cela dépend à quel offset de la ligne se situe la différence.
A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#5 | ||
|
Membre Expert
![]() Développeur java, access, sql server Inscription : octobre 2005 Messages : 851 ![]() |
Comme on ne peut pas utiliser CHECKSUM sur des champs Text,
une possibilité est de créer une fonction utilisateur qui compare ces deux champs. Du genre : Code :
Code :
SELECT dbo.CompText(t1.SPADM_LIBELLE, t2.SPADM_LIBELLE) AS test FROM ...
__________________
D'abord qu'il marche. Ensuite qu'il soit rapide. Enfin qu'il soit agréable à utiliser. First, make it work. Then, make it fast. Finally, make it user-friendly. Erst, mach', dass es funktioniert. Dann, mach', dass es schnell geht, Zum Schluss mach' es benutzerfreundlich. |
||
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Inscription : février 2008 Messages : 246 ![]() |
Merci pour ta participation, mais cette fonction compare juste la longueur du texte mais moi je veux comparer les données elles même.
|
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Développeur java, access, sql server Inscription : octobre 2005 Messages : 851 ![]() |
Pas du tout.
La fonction compare les deux textes et signale s'il existe une différence. Code :
IF SUBSTRING(@Text1,1,8000) <> SUBSTRING(@Text2,1,8000) ...
__________________
D'abord qu'il marche. Ensuite qu'il soit rapide. Enfin qu'il soit agréable à utiliser. First, make it work. Then, make it fast. Finally, make it user-friendly. Erst, mach', dass es funktioniert. Dann, mach', dass es schnell geht, Zum Schluss mach' es benutzerfreundlich. |
|
|
00
|
|
|
#8 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 950 ![]() |
Non, elle compare le contenu des 8000 premiers caractères....
A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#9 | |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Citation:
ce que te disais Népomucène, c'est que si tu veux comparer au delà de 8000 caractères, il faudra faire une boucle, pour comparer 8000 par 8000 sur toute la longueur voulue... |
|
|
|
00
|
|
|
#10 |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 667 ![]() |
Bonjour,
Non, la fonction que vous a donné Népomucène compare bien les données. Si vous êtes sous SQL Server 2005 ou plus, vous pouvez transtyper ces deux colonnes au type varchar(max) ... @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
00
|
|
|
#11 | ||
|
Membre du Club
![]() Inscription : février 2008 Messages : 246 ![]() |
Merci tout le monde pour vos réponses.
En fait, j'ai déjà fait dans ma requête : Code :
Code :
IF SUBSTRING(@Text1,1,8000) <> SUBSTRING(@Text2,1,8000) Merci encore pour votre apport |
||
|
|
00
|
|
|
#12 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Arff,
non effectivement, tel que vous le faites dans votre premier post, c'est correct Vous avez en fait je pense un problème de collation. est-ce que ceci vous donne le resultat que vous attendez ? Code SQL :
|
||
|
|
00
|
|
|
#13 |
|
Membre du Club
![]() Inscription : février 2008 Messages : 246 ![]() |
Merci pour tous.
C'est résolu avec le COLLATE.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com