Aller au contenu
Accueil » Articles de conseil » Faut-il utiliser CONVERT ou TRY_CONVERT ?

Faut-il utiliser CONVERT ou TRY_CONVERT ?

👉 Utiliser TRY_CONVERT par défaut,
👉 CONVERT seulement quand on veut volontairement une erreur.


Pourquoi TRY_CONVERT est souvent le meilleur choix

TRY_CONVERT :

  • Ne plante pas la requĂŞte
  • Retourne NULL si la conversion Ă©choue
  • Est idĂ©al pour :
    • DonnĂ©es sales / hĂ©tĂ©rogènes
    • Imports
    • Audits
    • RequĂŞtes en prod oĂą on veut Ă©viter un abort brutal

SELECT TRY_CONVERT(int, ‘123’);   — 123

SELECT TRY_CONVERT(int, ‘ABC’);   — NULL (pas d’erreur)


Quand CONVERT est préférable

CONVERT :

  • Lève une erreur si la conversion Ă©choue
  • Est utile quand :
    • Une erreur = anomalie bloquante
    • Tu veux dĂ©tecter immĂ©diatement une donnĂ©e invalide
    • Tu es dans un process contrĂ´lĂ© (ETL strict, règle mĂ©tier forte)

SELECT CONVERT(int, ‘ABC’);

— Msg 245, Conversion failed…

👉 C’est une forme de fail fast assumée.


Performances : mythe vs réalité

  • TRY_CONVERT est lĂ©gèrement plus cher que CONVERT
  • Mais :
    • la diffĂ©rence est nĂ©gligeable face Ă  un scan ou un join
    • beaucoup moins chère qu’une requĂŞte qui plante

⚠️ Attention surtout au SARGability (cf. article):

— Mauvais (index inutilisable)

WHERE TRY_CONVERT(date, ColVarchar) = ‘2026-01-01’

👉 Pré-convertis en amont si possible (staging, computed column persistée).


Bonnes pratiques concrètes

✅ Données externes / incertaines → TRY_CONVERT
✅ Audit / diagnostic / requêtes robustes → TRY_CONVERT
✅ Règle métier stricte / erreur attendue → CONVERT
❌ TRY_CONVERT dans un WHERE

Étiquettes:

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *