Précédent   Forum des professionnels en informatique > Bases de données > Sybase
Sybase Forum sur la base de données Sybase. Avant de poster -> F.A.Q Sybase, Tutoriels Sybase
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/05/2007, 13h42   #1
Futur Membre du Club
 
Inscription : janvier 2005
Messages : 36
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 36
Points : 16
Points : 16
Par défaut substring sur champ de type text

Bonjour,

je cherche a extraire une partie seulement d'une colonne de type TEXT; or la fonction substring ne peut pas etre utilisée sur ce type de donnée

J'ai utilisé la fonction readtext qui me permet d'obtenir les données que je veux mais je n'ai pas réussi a utiliser readtext comme "champ" d'un select...

en fait, mon besoin est de crée une requête qui retourne plusieurs champs dont un de ces champs serai le résultat d'un substring sur un colonne de type text.

si quelqu'un a une idee sur ce qu'il serait possible de faire, il sera le bien venu car pour l'heure je commence a désespérer

Par avance merci pour votre aide
jarod
jarod_bx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2007, 14h20   #2
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
Les champs TEXT ne permettent pas d'opération SQL directement. Le principe est que tout traitement se fait dans le code client.

Si tu es en 12.5 ou en 15 tu pourrais faire un convert(varchar(16384), champs_text) et faire un substring dessus. Evidemment il ne faut pas que tu ai besoin de données au delà des premiers 16K du champ texte.

Michael
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2007, 14h57   #3
Futur Membre du Club
 
Inscription : janvier 2005
Messages : 36
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 36
Points : 16
Points : 16
Citation:
Envoyé par mpeppler
Les champs TEXT ne permettent pas d'opération SQL directement. Le principe est que tout traitement se fait dans le code client.

Si tu es en 12.5 ou en 15 tu pourrais faire un convert(varchar(16384), champs_text) et faire un substring dessus. Evidemment il ne faut pas que tu ai besoin de données au delà des premiers 16K du champ texte.

Michael
C'est un peu ce que je craignais suite a mes recherches sur le net
en tout cas, merci pour cette réponse/solution.

malheurseument, j'utiliser un champs texte pour stocker des messages XML extrait d'une application dont je voudrais utiliser certaine information pour generer des reports.
et j'ai quelques craintes sur le fait de tronquer les messages a 16k...
ou alors il faut que je place tous les champs dont j'ai besoin en debut de message

merci encore.
jarod
jarod_bx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2007, 18h14   #4
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
Suivant la version de Sybase (12.5., 15) il reste encore la possiblité d'utiliser les fonctionalité XML directement pour extraire l'information voulue.

Michael
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 15h13   #5
Futur Membre du Club
 
Inscription : janvier 2005
Messages : 36
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 36
Points : 16
Points : 16
Citation:
Envoyé par mpeppler
Suivant la version de Sybase (12.5., 15) il reste encore la possiblité d'utiliser les fonctionalité XML directement pour extraire l'information voulue.

Michael
j'ai mis en place une solution avec conversion en varchar et cela fonctionne plus ou moins pour le moment

mais es ce que tu pourrais me donner plus de détail (méthode & fonction) sur la solution via XML, cela pourrait tres fortement m'intéresser.

merci par avance pour ton aide.
cordialement
jarod
jarod_bx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2007, 07h35   #6
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
Je ne suis pas un grand spécialiste XML...

Voici quelques exemples pris dans les manuels:

Code :
1
2
3
4
5
6
7
8
 
SELECT xmlextract('/bookstore/book[price=55        
   | author/degree/[@from="Harvard"] ]/title'
     text_doc )
FROM sample_docs
------------------------------------------------------ 
<title>History of Trenton</title> 
<title>Trenton Today, Trenton Tomorrow</title>
ou bien
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
SELECT xmlextract('//row[price<10 | city="Boston" ]/pub_id',     
     text_doc) FROM sample_docs2>  
------------------------------------   
NULL            
 
<pub_id>0736</pub_id>
 
<pub_id>0736</pub_id>   
<pub_id>0877</pub_id>   
<pub_id>0736</pub_id>   
<pub_id>0736</pub_id>
Le manuel (en anglais) est ici: http://infocenter.sybase.com/help/in...xmlb/title.htm

Michael
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h45.


 
 
 
 
Partenaires

Hébergement Web