Ce n'est pas lié au SQL, c'est pour spécifier le flag "global" à la recherche regexp, c'est-à-dire ne pas s'arrêter à la première occurence trouvée.
un peu comme dans sed !
ravi de la question, je découvre aussi !
@+
]]>par curiosité 'sql' , à quoi correspond le paramètre 'g' dans la commande regexp_matches ?
regexp_matches(sequence, 'tour', 'g')
bonne journée
]]>SELECT id_ilot, count(*) FROM (
SELECT id_ilot, regexp_matched(sequence, 'tour', 'g')
FROM rpg.sequencesclasseestournesol_fr_06_14
) s
GROUP BY s.id_ilot
je cherche une solution de requête ( qui parait simple à priori) mais je n'arrive à concrétiser .
je cherche a compter le nombre d'occurrence d'une sous chaine dans un champs texte
le champs [sequence] de la table contient des chaines du style : "tour_blet_tour_blet_tour_blet_tour_blet_tour"
et je voudras pouvoir compter ( par enregistrement ( ligne de la table) le nombre d’occurrence 'tour' dans la chaine précédente.
après plusieurs exploration avec la commande regexp_matches qui me retrouve bien la sous chaine 'tour' ;
puis j'ai exploré la fonction de recherche plein text ;
j'arrive a récupérer les positions de la sous chaine 'tour'
select id_ilot,sequence , to_tsvector ( "sequence" ) :: tsvector
from rpg.sequencesclasseestournesol_fr_06_14
where id_ilot = '001-10923'
me donne :
id_ilot sequence to_tsvector
"001-10923";"mais_mais_prairiet_blet_mais_tour_mais_mais_tour";"'blet':4 'prairiet':3 'tour':6,9"
"001-10923";"mais_mais_tour_blet_mais_tour_mais_mais_tour";"'blet':4 'tour':3,6,9"
la je me dit que je suis pas loin du but ...
il me faudrait juste trouver la bonne requete pour pouvoir extraire ces occurrences pour chaque ligne (id_ilot)
c'est là que je sollicite votre aide car je me dit je me suis peut être égaré avec les tsvector ... ?
merci par avance
]]>