SQL Server 2012 bevezetett egy új beépített logikai funkció SQL IIF. Ez egy rövidített formában írásban esetben nyilatkozat logika, vagy ha-ELSE logika.
az SQL-ben az esettanulmányt a korábbi cikkemben vizsgáltuk meg. Egy esettanulmányt használunk az eredmény visszaküldéséhez a meghatározott feltétel alapján. Hasonló az IF-hez..ELSE … ezután a statement kiértékel egy kifejezést és visszaadja a kimenetet. Az esettanulmány az SQL Server szinte minden verziójában elérhető.
fedezzük fel ezt az SQL IIF funkciót ebben a cikkben.,
SQL HA a Nyilatkozatot áttekintés
Mi a következő formátumot kell használni, hogy írjon az Esetben kijelentés logika SQL lekérdezések
SELECT CASE Kifejezés, Ha kifejezés1 Akkor Result1, Amikor kifejezés2 Akkor Result2 … MÁS Eredmény VÉGE
Tudjuk írni ezt a kódot használja az SQL HA a nyilatkozatot a szintaxis, mint a következő.
IIF(boolean_expression, true_value, false_value)
- Boolean_expression: az SQL IIF utasítás első paramétere egy logikai kifejezés., Kell egy érvényes logikai kifejezés mást kapunk egy kivétel
- True_Value: Ha a boolean_expression IGAZ, visszatér megadott értéket a true_value paraméter
- False_Value: Ha a boolean_expression HAMIS, a függvény a megadott értéket a false_value paraméter
fedezzük fel SQL HA a nyilatkozatot példákon keresztül.
1. példa: SQL IIF utasítás a
egész értékek összehasonlítására a következő példában a megadott logikai kifejezés hamis ( 2>3 nem igaz)., Due to this, it returns the value specified in the false_value parameter.
1
|
SELECT IIF(2 > 3, ‘TRUE’, ‘FALSE’ )
|
Similarly, if the condition is TRUE (5>3 is TRUE) so it returns the value of true_value parameter.,
1
|
SELECT IIF(5 > 3, ‘TRUE’, ‘FALSE’ )
|
Example 2: SQL IIF statement with variables
In the following example, we specified two integer variables and assigned values. We use variables for comparison in the IIF statement.,
1
2
|
DECLARE @A INT = 80, @B INT = 70
SELECT IIF(@A >= @B, ‘PASS’, ‘FAIL’ )
|
The specified condition (80>70) is TRUE, so it returns the value PASS.,
3. példa: SQL IIF utasítás két
karakterlánc összehasonlításához a következő példában az SQL IIF utasítás segítségével szeretnénk összehasonlítani a karakterláncadatokat. Szeretnénk tudni, hogy a személy tetszik alapján a személy nevét.,
1
2
|
DECLARE @Person Varchar(100) = ‘Raj’
SELECT IIF(@Person=’Raj’,’Likes Apple’,’NA’)
|
We can specify multiple conditions in SQL IIF statement as well.,i>
1
2
|
DECLARE @Person Varchar(100) = ‘Raj’
SELECT IIF(@Person in(‘Raj’, ‘Mohan’),’Likes Apple’,’Likes Orange’)
|
The query should return Likes Orange if the person name is not in the IN clause., A következő példában a person Vinay nem létezik a @Person változóban, így hamis záradék értékét adja vissza.
4. Példa: Beágyazott SQL HA a nyilatkozatot
használhatjuk Beágyazott SQL HA nyilatkozatát is adja meg, több feltételek
ebben Az SQL HA a funkció ellenőrzi, az első feltétel, valamint ha a feltétel IGAZ, akkor a függvény értéke. A mi esetünkben ez hamis (személy Vinay nem egyezik Raj). ellenőrzi a másik feltétel visszatér eredményeket, ha ez igaz.,
Ha egyik feltétel sem igaz, visszaadja az alapértelmezett hamis üzenetet.
5. példa: SQL IIF utasítás
táblázatoszloppal az előző példákban vagy közvetlenül az IIF nyilatkozatban vagy a megadott változókban adjuk meg az értékeket. Általában azt akarjuk használni a meglévő adatokkal egy SQL táblázatban. Az IIF-nyilatkozatot táblázatoszloppal is használhatjuk.,
a következő példában szeretnénk megismerni a beszállító nevét a WideWorldImporters adatbázisban található PurchaseOrders táblából.
Ha a beszállítói név nem létezik egy adott beszállítói azonosítóhoz, akkor a megadott hamis értéket adja vissza az SQL IIF nyilatkozatban.
6. Példa: az SQL HA a nyilatkozatot a táblázat oszlop, valamint összesített funkció
7. Példa: az SQL HA nyilatkozatot, valamint az adatok típus elsőbbséget
lehet, hogy a különböző adattípusok számára az eredményeket., Ha az eredményfeltételekben különböző adattípusok vannak megadva, az SQL Server adja a legmagasabb elsőbbségi adattípust. A következő példában a hamis állapot (11>19) esetén az eredmény a false_value argumentum lesz, azaz 100. E egész adat típusúnak kell lennie, de a kimenetet 40.0 kapjuk, mert a másik argumentum float (2.6) nagy elsőbbséget élvez, mint egy egész szám.,
1
|
SELECT IIF(11 > 19, 2.6, 40)
|
You can check the data type precedence in the following image
Example 8: SQL IIF with NULL values
We should be careful in NULL values inside the SQL IIF function.,
1
2
3
|
SELECT
IIF(100 > 99, NULL, NULL) AS Result;
|
We cannot specify NULL in both the true and false arguments. We get the following error message.,
Msg 8133, 16.szint, 1. állapot, 1. sor az EREDMÉNYKIFEJEZÉSEK legalább egyikének az ESETLEÍRÁSBAN A NULL állandótól eltérő kifejezésnek kell lennie.
a hibaüzenetben láthatja, hogy információkat ad az ESET specifikációjáról, bár az SQL IIF funkciót használtuk. Ezt a következő példában fogjuk megvizsgálni.
meg kell adnia legalább egy igaz vagy hamis argumentumot.,
1
2
|
SELECT
IIF(100 > 99, ‘Hello’, NULL) AS Result;
|
The similarity between SQL IIF statement and CASE Statement
In the introduction of SQL IIF Statement, we mentioned that it is a shorthand form of writing CASE statement logic or IF-ELSE logic., Igen, ez igaz. Belsőleg SQL Server átalakítja a nyilatkozatot a CASE utasítás végrehajtja. A lekérdezés tényleges végrehajtási tervével ellenőrizhetjük.
hajtsa végre a lekérdezést a 6. példából egy tényleges végrehajtási tervvel.
a tényleges végrehajtási tervben nézze meg a számítási skalár tulajdonságait. Láthatja, hogy belsőleg végrehajtja az esettanulmányt.
következtetés
ebben a cikkben feltártuk az SQL IIF nyilatkozatot, amely az esettanulmányhoz kapcsolódó feltételek írásának új módja., Az SQL 2012-től elérhető. Meg kell felfedezni ezt, hogy ismeri ezt. Ha bármilyen észrevétele vagy kérdése van, nyugodtan hagyja őket az alábbi megjegyzésekben.,
- Szerző
- Utolsó Hozzászólás
ő az alkotója az egyik legnagyobb ingyenes online gyűjtemények cikkek egyetlen témában, az ő 50 részes sorozat SQL Server mindig rendelkezésre álló csoportok. Az SQL Server közösséghez való hozzájárulása alapján 2020-ban és 2021-ben az SQLShack-en folyamatosan elismerték különböző díjakkal, köztük a rangos “az év legjobb szerzőjével”.,
Raj mindig érdekli az új kihívásokat, így ha segítségre van szüksége az írásaiban szereplő bármely témában, akkor rajendra-ban érhető el.gupta16@gmail.,com
összes Megtekintése hozzászólások Rajendra Gupta
- Végrehajtása kisebb-nagyobb verzió frissítéseket AWS RDS SQL Server – január 29, 2021
- Bevetni AWS RDS PostgreSQL esetekben – január 27, 2021
- Vándorolnak az intézményi SQL adatbázisok, hogy AWS RDS SQL Server segítségével AWS DMS – január 25, 2021