Vous êtes sur la page 1sur 4

SUBSTRING

USE BDD
GO

-- permet d'extraire une chaine de caractere a partir de la longueur spécifiée


-- exemple substring(prenom,2,4) va prendre les deux premiers caracteres et va
s'arreter au 4eme caractère ensuite

select * from contact

-- si on juste juste les prenoms comme initiale

select nom,substring(prenom,1,1)as initiale ,prenom from contact

-- Et si on veut les deux premieres lettres du prenoms et les trois suivantes ?

select nom,substring(prenom,2,3)as initiale ,prenom from contact

TRIM LTRIM RTRIM

USE BDD
GO

-- Supprime le caractère spécifié au début ou à la fin d’une chaîne.

-- attention TRIM n'est apparu qu'a partir de SQL Server 2017 :)

https://docs.microsoft.com/fr-fr/sql/t-sql/functions/trim-transact-sql

--- a gauche ?

DECLARE @espace_a_enlever varchar(60);


SET @espace_a_enlever = ' 5 caracteres a ma gauche';
SELECT
@espace_a_enlever AS 'version original',
LTRIM(@espace_a_enlever) AS 'Sans espace';
GO

--- a droite ?

DECLARE @espace_a_enlever varchar(60);


SET @espace_a_enlever = '4 espaces apres ceci ';
SELECT @espace_a_enlever + 'FIN';
SELECT RTRIM(@espace_a_enlever)+ 'FIN' ;
GO

--- des deux cotés ?

DECLARE @espace_a_enlever varchar(60);


SET @espace_a_enlever = ' deux espaces a ma droite et a ma gauche ';
SELECT 'DEBUT' + @espace_a_enlever + 'FIN';
SELECT 'DEBUT' + TRIM(@espace_a_enlever)+ 'FIN' ;
GO

UPPER LOWER

-- permet de transformer un texte en minuscule et en MAJUSCULE :


-- Mettons la colonne nom en Majuscule :

select upper(nom) from contact


-- et en minuscule

select lower(nom) from contact

FORMAT

USE BDD
GO

-- Utilisez la fonction FORMAT pour la mise en forme comme chaînes de valeurs de


date/heure et de
--valeurs numériques compatibles avec les paramètres régionaux.

-- Syntaxe : FORMAT ( value, format [,culture ] )

------ Exemple sur cette table

SELECT * from Contact

-- on va jouer sur la colonne date de naissance

------ FORMAT DATE

select top (1)


Date_de_naissance as Date,
format (Date_de_naissance,'d','fr-FR' ) as Francais,
format (Date_de_naissance,'d','en-US' ) as Anglais,
format (Date_de_naissance,'d', 'de-de') as allemand
FROM Contact

------------ avec les jours affichés

select top (1)


Date_de_naissance as Date_Normale,
format (Date_de_naissance,'D','fr-FR' ) as Francais,
format (Date_de_naissance,'D','en-US' ) as Anglais,
format (Date_de_naissance,'D', 'de-de') as allemand
FROM contact

------ FORMAT DEVISE

-- creation dune table avec un colonne en money

create table table_devise (devise money)

insert into table_devise values ('1,5'), ('7,5'),('1458'),('3,68')

select
format (devise, 'C', 'en-US' ) as en_dollar,
format (devise,'C', 'fr-FR' ) as en_euro,
format (devise,'C','en-GB' ) as anglais,
format (devise,'C','sv-SE' ) as suedois,
format (devise,'C','ar-SA' ) as arabe,
format (devise,'C','th-TH' ) as thailandais
FROM table_devise

Go
---- pour information pour voir le langage SQL par defaut sur le moteur

exec sp_configure 'default language'

exec sp_helplanguage
GO

********************** LEFT et RIFGH *************************


USE BDD
GO

-- Dans le langage SQL la fonction RIGHT et LEFT permet d’extraire la fin d’une
chaîne de caractères en définissant la longueur souhaité.

select * from Contact

select left(nom,2),right (prenom,5) from contact

-- On peut meme concatener les champs

select left(nom,2)+ right (prenom,5) from contact

********************** REPLACE et LEN ***********************************


USE BDD
GO

-- Remplace toutes les occurrences d'une valeur de type chaîne spécifiée par une autre
valeur de type chaîne.

-- REPLACE ( string_expression , string_pattern , string_replacement )

-- Un exemple tout simple

SELECT REPLACE('salut a vous', 'salut', 'Bonjour');

-- et dans notre table contact ?

SELECT * FROM Contact

-- Amusons nous a remplacer la valeur

SELECT prenom, REPLACE(prenom, 'sandrine', 'Tata_sandrine') FROM Contact

-- LEN Retourne le nombre de caractères de l'expression de type chaîne spécifiée, à


l'exception des espaces de droite.
-- Attention LEN exclut les espaces à droite.

DECLARE @v1 varchar(40),


@v2 nvarchar(40);
SELECT
@v1 = 'combien de caracteres ? ' --24 caracteres avec le caractere a droite
SELECT LEN(@v1) AS [varchar LEN] , DATALENGTH(@v1) AS [varchar DATALENGTH];

-- et dans notre table contact

SELECT prenom, len(prenom) as longueur FROM Contact

********************** REPLICATE/REVERSE/CHARINDEX *************************

-- REPLICATE : Répète une valeur de chaîne un nombre spécifié de fois.

-- REPLICATE ( string_expression ,integer_expression )

USE AdventureWorks2014
GO
SELECT [Name],ProductLine
, REPLICATE('0', 4) + [ProductLine] AS 'Line Code'
FROM [Production].[Product]
WHERE [ProductLine] = 'T'
ORDER BY [Name];
GO

-- REVERSE : Retourne l'ordre inverse d'une valeur de chaîne.

SELECT FirstName, REVERSE(FirstName) AS Reverse


FROM Person.Person
WHERE BusinessEntityID < 5
ORDER BY FirstName;
GO

-- CHARINDEX :Cette fonction recherche une expression de caractères


-- à l’intérieur d’une deuxième expression de caractères,
-- retournant la position de départ de la première expression si elle est trouvée.

DECLARE @document varchar(64);


SELECT @document = 'Ou est toto'
SELECT CHARINDEX('toto', @document);
GO

*************************** STRING_SPLIT/STUFF *******************************


-- STRING_SPLIT

-- Fractionne l’expression de caractères à l’aide du séparateur spécifié.


-- Attention il faut en mode de compatibilité 130

USE [master]
GO
ALTER DATABASE [BDD] SET COMPATIBILITY_LEVEL = 130
GO
use BDD
go
SELECT * from STRING_SPLIT ('1,2,3,4,5', ',')

-- STUFF
-- La fonction STUFF permet d'insérer une chaîne dans une autre chaîne
-- STUFF ( character_expression , start , length , replaceWith_expression )

use AdventureWorks2014
go
SELECT STUFF('abcdef', 2, 3, 'ijklmn');
GO

CONCAT/CONCAT_WS **********************************

-- Cette fonction retourne une chaîne qui résulte de la concaténation


-- ou de la jointure de deux valeurs de chaîne ou plus, de bout en bout

-- CONCAT ( string_value1, string_value2 [, string_valueN ]

SELECT CONCAT ( 'Happy ', 'Birthday ', 11, '/', '25' ) AS Result

-- Va prendre en charge un séparateur

select database_id, recovery_model_desc, containment_desc AS DatabaseInfo FROM


sys.databases
go
SELECT CONCAT_WS( ' - ', database_id, recovery_model_desc, containment_desc) AS
DatabaseInfo FROM sys.databases

Vous aimerez peut-être aussi