Microsoft SQL Server/Fonctions
Introduction.
On distingue deux types de fonctions :
Environnement SERVERPROPERTY.
La fonction suivante permet de récupérer le nom du serveur courant :
SELECT SERVERPROPERTY('MachineName')
Condition ISNULL.
Cette fonction ne renvoie pas "vrai" si la variable est nulle, comme dans d'autres langages de programmation, mais plutôt son second paramètre, un substitut à NULL obligatoire. Ceci permet de lever les exceptions sur les variables nulles directement dans les requêtes, sans ajout de ligne supplémentaire.
Voici un exemple où Les NULL sont traités comme les vides :
select Champ1 = case when isnull(@Colonne,")=" then '*' else @Colonne end
from Table1
Extrémums : MIN, MAX.
Les fonctions "Min()" et "Max()" renvoient respectivement le minimum et le maximum d'une liste de champs.
select min(Date) from Calendrier where RDV = 'Important'
Conversions : CAST et CONVERT.
CAST modifie le type d'une variable :
 cast(Champ as decimal(12, 6)) -- sinon '9' > '10'
CONVERT modifie le type d'une variable en premier paramètre, et sa longueur en second.
 convert(varchar, Champ1, 112)
 convert(datetime, Champ2, 121) -- sinon impossible de parcourir le calendrier (ex : J + 1)
Exemple de problème :
 select Date1
 from Table1
 where Date1 between '01/10/2013' and '31/10/2013'
Les dates ne sont pas forcément reconnues sans utiliser codice_1. La solution est donc de stocker les dates si possible dans le format codice_2 :
 select Date1
 from Table1
 where Date1 between convert(varchar,'20131001',112) and convert(varchar,'20131031',112)
Si par contre la date du paragraphe ci-dessus est stockée en codice_3 avec des slashs, il devient obligatoire de la reformater pour pouvoir la comparer.
De nombreux formats de dates sont disponibles.
Arrondis : FLOOR, CEILING, ROUND.
Pour arrondir un nombre :
Troncatures : LEFT, RIGHT, et SUBSTRING.
Permettent de découper des chaines de caractères selon les positions de leurs caractères. 
 select substring('13/10/2013 00:09:19', 7, 4) -- renvoie les quatre caractères à partir du septième, soit "2013"
Par exemple dans le cas de la date avec slashs vue dans le paragraphe précédent :
 select Date1
 from Table1
 where right(Date1, 4) + substring(Date1, 4, 2) + left(Date1, 2) between convert(varchar,'20131001',112) and convert(varchar,'20131031',112)
Recherche CHARINDEX.
Pour rechercher la position d'un mot dans une chaine de caractères :
select CHARINDEX ('table2', 'table1 table2 table3');
-- égal 8
Manipulations : REPLACE et STUFF.
Permettent de remplacer des caractères dans une chaine selon leur valeur : rechercher et remplacer.
Par exemple pour mettre à jour le chemin d'un répertoire renommé :
update Table1
SET Champ1 = replace(Champ1,'\Ancien chemin\','\Nouveau chemin\')
where Champ1 like '%\Ancien chemin\%'
Dates.
Format date.
La fonction codice_11 est utilisée pour la date courante. Pour obtenir plutôt la date d'un jour donné au format date, il faut utiliser codice_12 :
select convert(smalldatetime, '2016-01-02', 121)
Découpage.
La fonction codice_13 extrait une partie de date sans avoir besoin de son emplacement.
Toutefois, trois fonctions permettent d'accélérer l'écriture de ce type d'extractions :
-- Jour
select day(getdate())
-- Mois
select month(getdate())
-- Année
select year(getdate())
-- Année précédente
select getdate(), 'Année précédente : ' + str(year(getdate()) - 1)
Noms.
La fonction codice_14 permet d'obtenir les noms des éléments d'une date. Ex :
select datename(month, '20160712') -- affiche "juillet"
select datename(weekday, '20160712') -- affiche "mardi"
Addition et soustraction de jours.
Voici deux fonctions de manipulation de dates :
-- Dernier jour du mois précédent
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0))
-- Dernier jour du mois courant
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0))
-- Dernier jour du mois prochain
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+2,0))
Exemple : 
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,'20150101'),0)) as date
donne :
 date
 2014-12-31 23:59:59.000
Divers.
COALESCE.
Ce verbe anglais signifie "fusionner". La fonction affiche la première colonne en paramètre, puis si elle est nulle la deuxième, et ainsi de suite.
Exemple :
SELECT Champ1, Champ2, Champ3
FROM Table1
/* Affiche :
1 NULL NULL
NULL 2 NULL
NULL NULL 3
SELECT COALESCE(Champ1, Champ2, Champ3)
FROM Table1
/* Affiche :
1
2
3
RAND.
Abréviation de "" (aléatoire), génère un nombre au hasard entre zéro et un.
Exemple :
SELECT rand(), rand()
-- 0,733812301862999 0,043991986929891
Personnalisée.
On peut aussi créer ses propres fonctions avec codice_17, qui sont stockées dans un menu séparé à côté des tables et des procédures stockées.
CREATE FUNCTION MaFonction1(@Paramètre1 varchar) returns varchar AS
BEGIN
 return 'Hello ' + @Paramètre1
END
Triggers.
Les triggers sont des scripts qui se déclenchent selon certains évènements, et sont créés avec codice_18. Dans SSMS, on les trouvent dans le menu "Déclencheurs de base de données".
Par exemple pour afficher un texte à chaque création de base :
CREATE TRIGGER MonTrigger1
ON ALL SERVER 
FOR CREATE_DATABASE 
AS
BEGIN
 PRINT 'Une base a été créée.'
END
Parmi les évènements disponibles, on trouve :
Les actions à entreprendre peuvent être :
EVENTDATA.
EVENTDATA est une fonction qui renvoie une valeur XML si elle est référencée dans un trigger.

Microsoft SQL Server/Procédures stockées