2017-05-19 1 views
0

J'exécute ci-dessous sur requête SQL Server mais obtenir l'erreur:NVL est pas un nom de fonction intégrée RECONNU

SELECT DISTINCT t1.p_id "Id", 
(TO_CHAR("sysdate", 'YYYY') + least(SIGN(("sysdate" - to_date('01-Aug-' | | TO_CHAR("sysdate", 'YYYY'), 'DD-Mon-RRRR'))), 0)) "Year" 

FROM 
    t1, 
    t7, 
    t9 
WHERE 
    t9.ei_id(+)   = t7.e_id 
AND (t7.e_student  = t1.p_id) 
AND (t7.e_module   = t8.m_id) 
AND (NVL(t9.ei_q18m06, t7.e_end) > '31-Jul-' | | (TO_CHAR("sysdate", 'YYYY') + least(SIGN(("sysdate" - to_date('01-Aug-' | | TO_CHAR("sysdate", 'YYYY'), 'DD-Mon-RRRR'))), 0) + - 5)) 

Error: 

'nvl' is not a recognized built-in function name. 

Toute idée de comment cela peut être évité?

+2

serveur SQL ou Oracle? – xdd

+1

Comment éviter? Embaucher quelqu'un qui peut traduire PLSQL en TSql. Vous avez plus de problèmes que juste le problème NVL. – SMor

Répondre

2

NVL est la syntaxe Oracle

Utilisation ISNULL sur le serveur SQL:

AND (ISNULL(t9.ei_q18m06, t7.e_end) > '31-Jul-' | | (TO_CHAR("sysdate", 'YYYY') + least(SIGN(("sysdate" - to_date('01-Aug-' | | TO_CHAR("sysdate", 'YYYY'), 'DD-Mon-RRRR'))), 0) + - 5)) 

SQL NULL Functions

+3

ou utiliser 'COALESCE()' qui est ANSI standard, et devrait être utilisable sur toutes les plates-formes. – joop