T-SQL manipulation de chaines de caractères

Quand on programme en T-SQL, il est souvent nécessaire de faire de manipuler des chaines de caractères.

Dans ce post je vous propose de revoir quelques fonctions de base.

LEN

Cette fonction retourne la longueur d’une chaine de caractères

SELECT LEN(‘ceci est un test’)

Renvoie 16

LEFT

Renvoie la partie gauche d’une chaine de caractères en fonctions du nombre de caractères passé en paramètre de la fonction

SELECT LEFT (‘SQL Server 2008′, 3)

Renvoie ‘SQL’

RIGHT

Cette function fait le même traitement que la fonction Left mais renvoie la partie droite

SELECT RIGHT (‘SQL Server 2008′,4)

Renvoie ‘2008’

LTRIM et RTRIM

Ces fonctions suppriment les espaces à gauches (ltrim) et à droite (rtrim) d’une chaine de caractères

SELECT LTRIM(‘ test de chaine’)

Renvoie ‘test de chaine’

REPLACE

Comme son nom l’indique elle remplace une partie d’une chaine de caractères.
Cette fonction prend 3 paramètres : la chaine, chaine à remplacer, chaine de remplacement

SELECT REPLACE (‘ceci est un test’,’un test’,’une fonction’)

Renvoie ‘ceci est une fonction’

SUBSTRING

Cette fonction renvoie une partie d’une chaine de caractères
SELECT SUBSTRING (‘voici ma chaine’, 1,5)

Le 2eme paramètre correspond au caractère de départ et le 3eme paramètres est le nombre de caractères à renvoyer

Donc cet exemple renvoie ‘voici’

Sql Server : Quelques astuces pour optimiser vos requêtes

Voici quelques astuces qui peuvent aider à optimiser vos requêtes sql.

1- Parmi les colonnes se trouvant dans la clause SELECT ne doivent êtres présentent uniquement les colonnes nécessaires. chaque colonnes de la requête nécessite des opérations I/O et de la bande passante.

2 – L’utilisation du SELECT * FROM … est très fortement déconseillé.

2- Seule les lignes nécessaires doivent être retournées. Ne pas faire retourner 10000 lignes par l’application alors que l’on a besoins de voir uniquement les 10 ères. (exemple d’un datagrid paginé).
La fonction ROWNUMBER permet de faire de la pagination en tsql.
Plus d’infos sur cette fonction ici: http://msdn.microsoft.com/fr-fr/library/ms186734.aspx

3- Ne pas utiliser le DISTINCT ou UNION si l’unicité n’est pas nécessaire.

4- Dans le cas d’utilisation d’un CURSEUR, pensez à le fermer et  le désalouer le plus tôt possible.

5- L’utilisation des Procédures stockés est recommandée, surtout si le temps d’exécution d’une requête n’est pas prédit.
Les procédures stockés ont l’avantage d’avoir un temps d’execution fiable, car leur exécution ne demandent pas de recompilation.
Plus d’infos ici: http://www.codeproject.com/Articles/414272/Stored-Procedures-DO-NOT-increase-performance

Lire la suite

C# MVC : Remote Validation

Voici comment faire une validation particulière sur une propriété du model.
Exemple vérifier l’unicité du login dans la table des utilisateurs.

Pour cela dans le controleur UtilisateurControleur créer la méthode CheckUniqueLogin.
Cette méthode renvoie un type JsonResult

public JsonResult CheckUniqueLogin(string login)
 {
// requete base d’unicité du login
 int nblogin = GetNbLogin(login)</p>
if (nblogin  == 0)
 {
 return Json(true, JsonRequestBehavior.AllowGet);
 }
 else
 {
 return Json(“Ce login existe déjà”, JsonRequestBehavior.AllowGet);
 }
 }

Si le login n’existe pas , le Json retourné renvoie True sinon un message d’erreur.

Dans la classe du Model : UtilisateurModel
Sur la propriété Login rajouter l’attribut Remote avec le nom du controleur et la méthode à appeler pour la validation
[Remote("CheckUniqueLogin","Utilsateur")]

D’autre paramètres sont disponible pour cet attribut, voir ici pour plus de détails :
http://msdn.microsoft.com/fr-fr/library/gg508808%28v=vs.98%29.aspx

De plus pour que cette validation fonctionne, il faut que la propriété Login possède aussi l’attribut [Required]

C# : Génération de PDF

Voici 2 librairies qui permettent la génération de PDF :

1- ITextSharp
Cette librairie permet de générer un PDF soit avec des objets pdf (paragraphes , tables, text, …), soit à partir d’une Url.
Pour plus d’explication sur sont utilisation en MVC , voir ici

http://www.codeproject.com/Articles/66948/Rendering-PDF-views-in-ASP-MVC-using-iTextSharp

2- DodleReport
Cette librairie disponible par Nuget et sur CodePlex permet d’exporter n’importe quel type de liste dans des fichiers de différent format : Xls, PDF, Html,…
Son utilisation est vraiment très simple.
Toutes les infos ici: http://doddlereport.codeplex.com

pour info, DodleReport se sert de ItextSharp

Il existe d’autre méthodes pour générer un pdf comme par exemple : http://www.simple-talk.com/dotnet/asp.net/asp.net-mvc-action-results-and-pdf-content