2013-04-18 1 views
0

Dans mes certaines colonnes ont la valeur NULL. Donc, je ne peux pas obtenir d'autres informations (mes autres colonnes) ont une valeur nulle. Donc, j'utilise Isnull. Mais je me suis connecté où j'ai mis Isnull() dans mon code suivant.dans la méthode de sous-chaîne comment utiliser Isnull()

Mon code est

SELECT TOP(10) 'INSERT INTO jobs(Budget) VALUES('+ 

    CAST(SUBSTRING(CAST(r.Budget AS VARCHAR(50)), 0, PATINDEX('%laks%', r.Budget))*100000 

     + SUBSTRING(CAST(r.Budget AS VARCHAR(50)), PATINDEX('%laks%', r.Budget) + 4, 
     patindex('%Thousands%', r.Budget) - PATINDEX('%laks%', r.Budget) - 4)* 1000 AS VARCHAR(50))+')' 

FROM requirementsdetailsfororganization r 

Dans le code ci-dessus, je calcule Salaire lakhs et des milliers. partout où je mets Isnull(), il montre une erreur.

me suggérer sortirai de cette question ..

+0

où avez-vous mis isnull(), s'il vous plaît montrer au code ci-dessus affiché .. –

Répondre

2

Maintenant, ce que je pense qui se passe

Vous avez peut-être utilisé PATINDEX('%laks%', ISNULL(r.Budget,''))

maintenant PATINDEX() rendements zéro si le modèle est introuvable. Lorsque vous effectuez une recherche modèle '%laks% 'dans une chaîne vide retournée par ISNULL(), la valeur zéro est retournée qui provoque une erreur dans la fonction SUBSTRING(), quelque chose comme l'indice hors de portée

Une des solutions consiste à filtrer les lignes ayant une valeur nulle ou vide dans la colonne Budget. Vous pouvez donc ajouter la fonction LEN() et vérifier si elle n'est pas égale à zéro. Voir la condition WHERE ajoutée dans la requête ci-dessous.

SELECT TOP(10) 'INSERT INTO jobs(Budget) VALUES('+ 

    CAST(SUBSTRING(CAST(r.Budget AS VARCHAR(50)), 0, PATINDEX('%laks%', r.Budget))*100000 

     + SUBSTRING(CAST(r.Budget AS VARCHAR(50)), PATINDEX('%laks%', r.Budget) + 4, 
     patindex('%Thousands%', r.Budget) - PATINDEX('%laks%', r.Budget) - 4)* 1000 AS VARCHAR(50))+')' 

FROM requirementsdetailsfororganization r 
where len(r.Budget)<>0 


Pour les valeurs ayant NULL dans la colonne Budget vous pouvez insérer une valeur par défaut comme zéro

+0

Il travaille quand je l'utilise table unique. J'utilise join mais il montre une erreur. La fonction len() n'est pas possible dans les jointures? – Duk

1

Pour mettre une valeur nulle à quelque chose que vous pouvez utiliser dans votre chaîne, vous l'utilisez comme ceci:

... + isnull(expression, 'null') + ... 

Si la valeur de expression est null, vous obtenez la chaîne null à utiliser dans la requête. De même, pour multiplier les valeurs de votre requête, vous devez d'abord les convertir en nombres.

Questions connexes