Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
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 16/01/2011, 14h49   #1
Invité régulier
 
Inscription : avril 2003
Messages : 52
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 52
Points : 7
Points : 7
bonjour à tous,

j'ai dans une table FILMS un champ TITRE. je veux extraire les TITRE de films commençant par A en omettant à chaque fois les LE|LA|LES|UN|UNE|DES en utilisant un REGEXP sur un select mais je rame un peu.

pouvez-vous m'aider, SVP ?

Y a moyen de faire plus léger que

Code :
1
2
3
   1. SELECT title, REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( title, 'Les ', '' ) , 'La ', '' ) , 'Le ', '' ) , 'L\'', '' ) , 'Des ', '' ) , 'Une ', '' ) , 'Un ', '' ) AS FilmTitle
   2. FROM table_films
   3. HAVING FilmTitle LIKE 'A%'
?
sebnutt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2011, 21h09   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 986
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 986
Points : 18 234
Points : 18 234
Envoyer un message via MSN à CinePhil
HAVING s'emploie avec GROUP BY !

Essaie comme ça :
Code :
1
2
3
4
5
6
7
8
SELECT title
FROM table_films
WHERE 
  CASE 
    WHEN SUBSTRING(title FROM 1 FOR 3) IN ('Le ', 'La ', 'Un ') THEN SUBSTRING(title FROM 4 FOR 1) = 'a'
    WHEN SUBSTRING(title FROM 1 FOR 4) IN ('Les ', 'Des ', 'Une ') THEN SUBSTRING(title FROM 5 FOR 1) = 'a'
    ELSE SUBSTRING(title FROM 1 FOR 1) = 'A'
  END
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2011, 21h48   #3
Invité régulier
 
Inscription : avril 2003
Messages : 52
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 52
Points : 7
Points : 7
Enorme !
je ne savais pas qu'on pouvait avoir un case en SQL et j'apprends également la syntaxe pour le substring

Merci à toi
sebnutt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2011, 18h16   #4
Invité régulier
 
Inscription : avril 2003
Messages : 52
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 52
Points : 7
Points : 7
Citation:
Envoyé par CinePhil Voir le message
HAVING s'emploie avec GROUP BY !

Essaie comme ça :
Code :
1
2
3
4
5
6
7
8
SELECT title
FROM table_films
WHERE 
  CASE 
    WHEN SUBSTRING(title FROM 1 FOR 3) IN ('Le ', 'La ', 'Un ') THEN SUBSTRING(title FROM 4 FOR 1) = 'a'
    WHEN SUBSTRING(title FROM 1 FOR 4) IN ('Les ', 'Des ', 'Une ') THEN SUBSTRING(title FROM 5 FOR 1) = 'a'
    ELSE SUBSTRING(title FROM 1 FOR 1) = 'A'
  END
le group by est optionnel pour HAVING.
mais ton truc fonctionne plutot pas mal
sebnutt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2011, 18h20   #5
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 986
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 986
Points : 18 234
Points : 18 234
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par sebnutt Voir le message
le group by est optionnel pour HAVING.
HAVING est un WHERE qui opère sur le résultat d'un regroupement donc il s'emploie avec un regroupement donc avec un GROUP BY !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil 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 01h49.


 
 
 
 
Partenaires

Hébergement Web