Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1721 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Connaitre l'enregistrement le plus long [Trouvé]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Connaitre l'enregistrement le plus long [Trouvé]

n°1275971
Berceker U​nited
PSN : berceker_united
Posté le 02-01-2006 à 17:19:37  profilanswer
 

Bonjours.
Je voudrais connaitre l'enregistrement ayant la valeur d'un champs le plus longue dans la table.
Voila mon cas :
j'ai une table ayant ces enregistrement.
Ex :
champ 1 : Code
Champ 2 : idsociete
 
int.inf.too.sup.tva;    221
int.inf.too.sup.tva;    071
int.inf.too.sup.tva;    46
int.inf.too.sup.faq.lst;69
int.inf                     ;221
int.inf                     ;071
 
voici ma requete :  
SELECT as_txn_code FROM vw_appli_societes WHERE CHARINDEX(as_txn_code,'int.inf.too.sup.tva.221.rec')>0
 
En faite, je voudrais dans ce cas qu'il m'affiche les enregistrements le plus proche de celui que je demande, en gros :

Code :
  1. int.inf.too.sup.tva;    221
  2. int.inf.too.sup.tva;    071
  3. int.inf.too.sup.tva;    46


 
Pourtant ces enregistrements sont bonnes mais je ne le veut pas.

Code :
  1. int.inf                     ;221
  2. int.inf                     ;071


Comment puis je trouver mon resultat ?
Merci et bonne année ;)


Message édité par Berceker United le 02-01-2006 à 18:28:19
mood
Publicité
Posté le 02-01-2006 à 17:19:37  profilanswer
 

n°1275974
Arjuna
Aircraft Ident.: F-MBSD
Posté le 02-01-2006 à 17:30:39  profilanswer
 

j'ai rien compris :D

n°1275980
Berceker U​nited
PSN : berceker_united
Posté le 02-01-2006 à 17:41:10  profilanswer
 

Arjuna a écrit :

j'ai rien compris :D


Bon ok je vais tenter de reformuler  [:chewyy]  
 
Dans cette requete :

Code :
  1. SELECT as_txn_code FROM vw_appli_societes WHERE CHARINDEX(as_txn_code,'int.inf.too.sup.tva.221.rec')>0


Je demande des enregistrements ayant au moin un morceau de cette chaine. int.inf.too.sup.tva.221.rec  
mais je veux celle qui se rapproche le plus ou logiquement la plus longue car la structure des données est hierarchique (arbre).
...
int.inf.too
int.inf.too.sup
int.inf.too.sup.tva
int.inf.too.sup.tva.221
int.inf.too.sup.tva.221.rec
Avec ma requete ci-dessus je voudrai qu'il me retourne que "int.inf.too.sup.tva.221" et pas les autres de longueur moin importante. En gros je veux qu'il me retourne un resultat dont les enregistrements ont la plus grande longueur.

n°1275988
Arjuna
Aircraft Ident.: F-MBSD
Posté le 02-01-2006 à 17:52:11  profilanswer
 

utilise un max(length(as_txn_code)) dans un filtre (sous-requête)
 
mais j'avoue que je trouve ça un peu chelou :D)

n°1275991
Arjuna
Aircraft Ident.: F-MBSD
Posté le 02-01-2006 à 17:54:39  profilanswer
 

soit :
 

Code :
  1. SELECT as_txn_code
  2. FROM vw_appli_societes
  3. WHERE CHARINDEX(as_txn_code,'int.inf.too.sup.tva.221.rec')>0
  4. and length(as_txn_code) = (select max(length(as_txn_code)) from wv_appli_societes where CHARINDEX(as_txn_code,'int.inf.too.sup.tva.221.rec')>0)


 
PS: t'as le droit d'aller boire quelques cafés pendant que ça tourne ;)


Message édité par Arjuna le 02-01-2006 à 18:07:39
n°1276000
Berceker U​nited
PSN : berceker_united
Posté le 02-01-2006 à 18:07:07  profilanswer
 

Merci.
Probleme c'est lenght n'existe pas sous sqlserver mais bon c'est pas grave c'est len mais len ne marche pas avec max(len(...)) .  
je m'y connais pas trop mais au niveau des octets c'est une piste possible?

n°1276001
Arjuna
Aircraft Ident.: F-MBSD
Posté le 02-01-2006 à 18:08:07  profilanswer
 

Ben moi ça marche avec SQL Server :??:
 
Ne me dit pas que t'as utilisé un type "TEXT" ou "NTEXT" quand même :o
 

Code :
  1. select max(len(description))
  2. from item


 
et si t'as utilisé un type "CHAR()" ou "NCHAR()" alors c'est len(trim())


Message édité par Arjuna le 02-01-2006 à 18:10:57
n°1276009
Berceker U​nited
PSN : berceker_united
Posté le 02-01-2006 à 18:15:54  profilanswer
 

Je viens de verifier sous la msdn et je vois pas cette synthaxe. :??:
c'est un champ de type nvarchar

n°1276014
Berceker U​nited
PSN : berceker_united
Posté le 02-01-2006 à 18:29:34  profilanswer
 

T'es un boss Arjuna  :sol:  
Tu avais raison la requete fonctionne il y avait 2-3 crasses à corriger et elle fonctionne ;)

Code :
  1. SELECT     as_txn_code
  2. FROM         vw_appli_societes
  3. WHERE     (LEN(as_txn_code) =
  4.                           (SELECT     MAX(LEN(as_txn_code)) AS Expr1
  5.                             FROM          vw_appli_societes
  6.                             WHERE      CHARINDEX(as_txn_code, 'inf.int.sup.too.tva.221.rec') > 0)) AND (CHARINDEX(as_txn_code, 'inf.int.sup.too.tva.221.rec') > 0)


 
Merci encore  [:negueu]

n°1276070
mrbebert
Posté le 02-01-2006 à 20:27:59  profilanswer
 

C'est pas possible de récupérer la table en faisant un tri (par ordre décroissant) sur la longueur du champ :??:  
(et en se limitant au 1e enregistrement)
 
Au lieu de récupérer l'enregistrement le plus long, tu récupères le 1er, trié par longueur décroissante :D

mood
Publicité
Posté le 02-01-2006 à 20:27:59  profilanswer
 

n°1276082
Berceker U​nited
PSN : berceker_united
Posté le 02-01-2006 à 21:07:12  profilanswer
 

non cela ne marche j'y ai pensé, cela pose probleme parce que normalement je dois récupérer plusieurs enregistrement de meme longueur.  
En gros tu pensais à ceci
SELECT LEN(mon_champ) FROM ma_table ORDER BY 1

n°1276085
mrbebert
Posté le 02-01-2006 à 21:23:11  profilanswer
 

Je dirais plutôt :
SELECT champ FROM ma_table ORDER BY LEN(champ) DESC LIMIT 1
(avec la syntaxe adaptée au SGBD :whistle: )
 
Mais si tu veux pouvoir récupéré plusieurs champs ayant cette taille maximale, forcément, ca va pas.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Connaitre l'enregistrement le plus long [Trouvé]

 

Sujets relatifs
[RESOLU]Connaitre le nom ou le numero de sheet active?Connaitre temps de visites?
Dernier enregistrement dans une base[AJAX ?] Drag & Drop de blocs avec enregistrement de position
empecher l'enregistrement automatique des données dans accessCommande VBS pour connaitre la Version de JVM installée
fonction int premier(long n)Enregistrement du contenu d'une TextBox dans une variable (VB6)...
VBA Access - Repositionner le curseur sur l'enregistrement en modif[SQL Server] ntext -> <texte long>
Plus de sujets relatifs à : Connaitre l'enregistrement le plus long [Trouvé]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR