Se on SQL Serverin sisäänrakennettu toiminto. Sen avulla käyttäjä voi korvaa NULL-arvot tietyllä korvausarvolla. Tämä artikkeli antaa täydellisen yleiskatsauksen ISNULL-funktiosta, joka palauttaa vaihtoehtoisen arvon, jos lausekkeella tai taulukkotietueella on NULL-arvoja.
Syntaksi
Seuraava on syntaksi, joka havainnollistaa ISNULL-funktiota:
ISNULL ( Expression, Replacement )
Kuten näemme, tämä syntaksi hyväksyy vain kaksi argumenttia:
mysql ei ole sama
Jos lausekkeen arvo on NULL, tämä funktio korvaa NULL-arvon korvausarvolla. Kun väite on tietotyypit ovat erilaisia , SQL-palvelin muuntaa implisiittisesti korvausarvon tietotyypin lausekkeen tietotyypiksi ennen arvon palauttamista. Saamme lausekkeen arvon, kun lauseke ei ole NULL.
ISNULL-toiminto voi toimia SQL Serverissä (vuodesta 2008 alkaen), Parallel Data Warehousessa, Azure SQL Databasessa ja Azure SQL Data Warehousessa.
ISNULL-funktioesimerkki
Tutkitaanpa ISNULL-funktiota muutamilla esimerkeillä SQL Serverissä.
1. ISNULL-funktio numeerisella arvolla
Alla oleva esimerkki käyttää ISNULL-funktiota. Tässä ensimmäinen argumentti on NULL; siksi se palauttaa tuloksen toisen argumentin arvon:
java laskuri
SELECT ISNULL(NULL, 25) AS Result;
Suorituksen jälkeen saamme seuraavan tuloksen:
2. ISNULL-funktio merkkijonodatan kanssa
Alla oleva esimerkki käyttää ISNULL-funktiota. Täältä saamme merkkijonon arvon 'Hei' koska se on ensimmäinen argumentti. ISNULL()-funktion määrittelystä lähtien se palauttaa ensimmäisen argumentin arvon, kun se EI ole NULL:
SELECT ISNULL('Hello', 'Javatpoint') AS Result;
Suorituksen jälkeen saamme seuraavan tuloksen:
3. ISNULL-funktio muuttujilla
Alla oleva esimerkki käyttää ISNULL-funktiota ja palauttaa tuloksen muuttujalla:
DECLARE @expres VARCHAR(45); DECLARE @value VARCHAR(25); SET @expres = NULL; SET @value = 'Javatpoint'; SELECT ISNULL(@expres, @value) AS Result;
Suorituksen jälkeen saamme seuraavan tuloksen:
4. ISNULL-funktio taulukossa
Tässä aiomme nähdä, kuinka voimme korvata sarakkeen arvon merkityksellisellä arvolla, kun se sisältää nolla-arvoja. Luodaan ensin taulukko nimeltä Työntekijä' käyttämällä alla olevaa lausetta:
CREATE TABLE Employee (ID INT IDENTITY PRIMARY KEY, Emp_Name VARCHAR(50) NOT NULL, Age INT NULL, Salary INT NULL );
Nyt lisäämme joitain arvoja tähän taulukkoon käyttämällä alla olevaa lausetta:
INSERT INTO Employee (Emp_Name, Age, Salary) VALUES ('Kevin Huges', 28, 45000), ('Rose Bennet', NULL, 36000), ('Peter Butler', 25, NULL);
Kun tarkistamme taulukon, voimme nähdä sen työntekijöillä 2 ja 3 on NULL arvo.
Oletetaan, että haluamme korvata näiden sarakkeiden NULL-arvot päivittämättä niitä pysyvästi taulukossa. Siinä tapauksessa voimme käyttää ISNULL-funktiota korvaamaan NULL-arvot tietyllä arvolla.
Esimerkiksi , haluamme palauttaa ikä ja palkkaa työntekijän 22 ja 25 000, jos niiden sarakkeissa on NULL-arvot Työntekijä-taulukossa. Voimme tehdä tämän käyttämällä seuraavaa lausetta:
nopea lajittelu java
SELECT ID, Emp_Name, ISNULL(Age, 22) AS Age, ISNULL(Salary, 25000) AS Salary FROM Employee;
Suorituksen jälkeen saamme seuraavan tuloksen:
Jos suoritamme kyselyn ISNULL-funktiolla sarakkeelle, jossa millään sarakkeella ei ole NULL-arvoja taulukossa, tämä kysely palauttaa rivien todelliset arvot.
Esimerkiksi , olemme päivittäneet palkkaa työntekijästä, jonka ID=2 seuraavasti:
UPDATE Employee SET Salary = 65000 WHERE ID=2;
Jälleen, jos suoritamme ISNULL-funktion, se ei muuta palkkasaraketta. Katso alla oleva tulos:
kokeile tietorakennetta
5. ISNULL yhdistelmäfunktioilla
SQL Server mahdollistaa myös yhdistelmäfunktioiden, kuten SUM, AVG, käytön ISNULL-funktion kanssa. Oletetaan, että meidän on ehkä hankittava palkan summa Työntekijätaulukon sarake, ja jos jossakin palkkasarakkeessa on NULL, se korvataan 25 000:lla ennen palkkojen lisäämistä.
Ennen koontimenetelmien suorittamista päivitämme työntekijän palkan NULL:lla, jonka tunnus on 2, alla olevalla kyselyllä.
UPDATE Employee SET Salary = NULL WHERE ID=2;
Alla oleva esimerkki korvaa ensin NULL-arvon arvolla 25000 ja suoritti sitten SUMMA-toiminnon sille. Katso alla oleva tulos:
SELECT SUM(ISNULL(Salary, 25000)) AS Sum_of_Salaries FROM Employee;
Suorituksen jälkeen saamme seuraavan tuloksen:
Vastaavasti ISNULL-funktiota voidaan käyttää korvaamaan NULL-arvot ja palauttamaan sitten keskiarvon arvolla AVG()-funktio . Katso alla oleva lausunto:
ero jään ja lumen välillä
SELECT AVG(ISNULL(Salary, 25000)) AS Avg_of_Salaries FROM Employee;
Suorituksen jälkeen saamme seuraavan tuloksen:
Ero SQL Serverin ISNULL ja IS NULL välillä
ISNULL- ja IS NULL-funktiot ovat molemmat erilaisia SQL Serverissä. Käytämme ISNULL-funktiota, kun meillä on tarvetta korvaa NULL-arvot tietyllä arvolla. Toisaalta käytämme IS NULL -funktiota, kun haluamme tunnista NULL-arvot taulukossa.
Katsotaanpa alla olevaa esimerkkiä niiden erojen havainnollistamiseksi .
Oletetaan, että haluamme saada työntekijätiedot Työntekijä' taulukko, joka sisältää NULL-arvot Palkka-sarakkeessa. Tämän tyyppisten tietojen saamiseksi meidän tulisi käyttää IS NULL -toimintoa MISSÄ lauseke seuraavasti:
SELECT * FROM Employee WHERE Salary IS NULL;
Se palauttaa työntekijän tiedot, jonka palkka on NULL:
Jos nyt yritämme saada tämäntyyppisiä tietoja ISNULL-toiminnolla, SQL Server seuraavien ohjeiden avulla virhe :
SELECT * FROM Employee WHERE Salary ISNULL(NULL, 0;
Tässä on virhe:
Näin ollen on selvää, että SQL Server ei salli meidän käyttää ISNULL-koodia NULL-arvojen löytämiseen.