Bonjour,
Je recherche une requete qui permet de m'afficher la chaine de caractére qui se trouve à gauche de la seconde occurence '.'
Cordialement
battl14
Bonjour,
Je recherche une requete qui permet de m'afficher la chaine de caractére qui se trouve à gauche de la seconde occurence '.'
Cordialement
battl14
Par exemple en utilisant une CTE récursive...
Exemple :
La requête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 CREATE TABLE T (K INT NOT NULL PRIMARY KEY, C VARCHAR(32)) INSERT INTO T VALUES (1, 'abcd'); INSERT INTO T VALUES (2, 'abcd.efg'); INSERT INTO T VALUES (3, 'abcd.efg.ij'); INSERT INTO T VALUES (4, 'abcd.efg.ij.k'); INSERT INTO T VALUES (5, NULL);
Le résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 WITH CTE AS (SELECT CASE WHEN CHARINDEX('.', C) > 0 THEN SUBSTRING(C, CHARINDEX('.', C) + 1, LEN(C) - CHARINDEX('.', C)) ELSE NULL END AS C, 1 AS RANG, CHARINDEX('.', C) AS POSITION, K FROM T UNION ALL SELECT CASE WHEN CHARINDEX('.', CTE.C) > 0 THEN SUBSTRING(CTE.C, CHARINDEX('.', CTE.C) + 1, LEN(CTE.C) - CHARINDEX('.', CTE.C)) ELSE NULL END, CTE.RANG + 1, CTE.POSITION + CHARINDEX('.', CTE.C), CTE.K FROM T INNER JOIN CTE ON T.K = CTE.K WHERE CHARINDEX('.', CTE.C) > 0 ) SELECT T.*, SUBSTRING(T.C, 1, POSITION-1) AS PARSE FROM T LEFT OUTER JOIN CTE ON T.K = CTE.K WHERE RANG = 2
Pour en savoir plus sur la technique des CTE, lisez l'article que j'ai écrit à ce sujet : http://sqlpro.developpez.com/cours/s...te-recursives/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 K C PARSE ----------- -------------------------------- -------------------------------- 4 abcd.efg.ij.k abcd.efg 3 abcd.efg.ij abcd.efg
A +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Partager