NULLIF SQL function
1. Usage of NULLIF to show Stock to Order Ration.
SQL Server Query 1
SELECT
ProductID,
ProductName,
UnitsInStock,
UnitsOnOrder,
-- Avoid division by zero if UnitsOnOrder is 0
CASE
WHEN UnitsOnOrder = 0 THEN 0 -- Or some other appropriate value
ELSE UnitsInStock / NULLIF(UnitsOnOrder, 0)
END AS StockToOrderRatio
FROM Products
ORDER BY ProductID;
Create SQL query with SqlQueryBuilder 1
var (sql1, parameters1) = new SqlQueryBuilder()
.Select()
.Columns("ProductID", "ProductName", "UnitsInStock", "UnitsOnOrder")
.Column(new CASE()
.When(new Column("UnitsOnOrder").Equale(0))
.Then(0)
.Else(new ColumnArithmatic("UnitsInStock").DIVIDE(new NULLIF(new Column("UnitsOnOrder"), 0)))
, "StockToOrderRatio")
.From("Products")
.OrderBy(new OrderBy().Set(new Column("ProductID")))
.Build();
Query build by SqlQueryBuilder 1
SELECT ProductID,
ProductName,
UnitsInStock,
UnitsOnOrder,
CASE WHEN UnitsOnOrder = @pMAIN_2507192025015353300 THEN @pMAIN_2507192025015353301 ELSE UnitsInStock / NULLIF (UnitsOnOrder, @pMAIN_2507192025015353302) END AS StockToOrderRatio
FROM Products
ORDER BY ProductID ASC;
Parameters (If used)
Name |
Value |
@pMAIN_2507192025015353300 |
0 |
@pMAIN_2507192025015353301 |
0 |
@pMAIN_2507192025015353302 |
0 |
Query Results 1:
|
ProductID |
ProductName |
UnitsInStock |
UnitsOnOrder |
StockToOrderRatio |
1 |
1
|
Chai
|
39
|
0
|
0
|
2 |
2
|
Chang
|
17
|
40
|
0
|
3 |
3
|
Aniseed Syrup
|
13
|
70
|
0
|
4 |
4
|
Chef Anton's Cajun Seasoning
|
53
|
0
|
0
|
5 |
5
|
Chef Anton's Gumbo Mix
|
0
|
0
|
0
|
6 |
6
|
Grandma's Boysenberry Spread
|
120
|
0
|
0
|
7 |
7
|
Uncle Bob's Organic Dried Pears
|
15
|
0
|
0
|
8 |
8
|
Northwoods Cranberry Sauce
|
6
|
0
|
0
|
9 |
9
|
Mishi Kobe Niku
|
29
|
0
|
0
|
10 |
10
|
Ikura
|
31
|
0
|
0
|
11 |
11
|
Queso Cabrales
|
22
|
30
|
0
|
12 |
12
|
Queso Manchego La Pastora
|
86
|
0
|
0
|
13 |
13
|
Konbu
|
24
|
0
|
0
|
14 |
14
|
Tofu
|
35
|
0
|
0
|
15 |
15
|
Genen Shouyu
|
39
|
0
|
0
|
16 |
16
|
Pavlova
|
29
|
0
|
0
|
17 |
17
|
Alice Mutton
|
0
|
0
|
0
|
18 |
18
|
Carnarvon Tigers
|
42
|
0
|
0
|
19 |
19
|
Teatime Chocolate Biscuits
|
25
|
0
|
0
|
20 |
20
|
Sir Rodney's Marmalade
|
40
|
0
|
0
|
21 |
21
|
Sir Rodney's Scones
|
3
|
40
|
0
|
22 |
22
|
Gustaf's Knäckebröd
|
104
|
0
|
0
|
23 |
23
|
Tunnbröd
|
61
|
0
|
0
|
24 |
24
|
Guaraná Fantástica
|
20
|
0
|
0
|
25 |
25
|
NuNuCa Nuß-Nougat-Creme
|
76
|
0
|
0
|
26 |
26
|
Gumbär Gummibärchen
|
15
|
0
|
0
|
27 |
27
|
Schoggi Schokolade
|
49
|
0
|
0
|
28 |
28
|
Rössle Sauerkraut
|
26
|
0
|
0
|
29 |
29
|
Thüringer Rostbratwurst
|
0
|
0
|
0
|
30 |
30
|
Nord-Ost Matjeshering
|
10
|
0
|
0
|
31 |
31
|
Gorgonzola Telino
|
0
|
70
|
0
|
32 |
32
|
Mascarpone Fabioli
|
9
|
40
|
0
|
33 |
33
|
Geitost
|
112
|
0
|
0
|
34 |
34
|
Sasquatch Ale
|
111
|
0
|
0
|
35 |
35
|
Steeleye Stout
|
20
|
0
|
0
|
36 |
36
|
Inlagd Sill
|
112
|
0
|
0
|
37 |
37
|
Gravad lax
|
11
|
50
|
0
|
38 |
38
|
Côte de Blaye
|
17
|
0
|
0
|
39 |
39
|
Chartreuse verte
|
69
|
0
|
0
|
40 |
40
|
Boston Crab Meat
|
123
|
0
|
0
|
41 |
41
|
Jack's New England Clam Chowder
|
85
|
0
|
0
|
42 |
42
|
Singaporean Hokkien Fried Mee
|
26
|
0
|
0
|
43 |
43
|
Ipoh Coffee
|
17
|
10
|
1
|
44 |
44
|
Gula Malacca
|
27
|
0
|
0
|
45 |
45
|
Rogede sild
|
5
|
70
|
0
|
46 |
46
|
Spegesild
|
95
|
0
|
0
|
47 |
47
|
Zaanse koeken
|
36
|
0
|
0
|
48 |
48
|
Chocolade
|
15
|
70
|
0
|
49 |
49
|
Maxilaku
|
10
|
60
|
0
|
50 |
50
|
Valkoinen suklaa
|
65
|
0
|
0
|
51 |
51
|
Manjimup Dried Apples
|
20
|
0
|
0
|
52 |
52
|
Filo Mix
|
38
|
0
|
0
|
53 |
53
|
Perth Pasties
|
0
|
0
|
0
|
54 |
54
|
Tourtière
|
21
|
0
|
0
|
55 |
55
|
Pâté chinois
|
115
|
0
|
0
|
56 |
56
|
Gnocchi di nonna Alice
|
21
|
10
|
2
|
57 |
57
|
Ravioli Angelo
|
36
|
0
|
0
|
58 |
58
|
Escargots de Bourgogne
|
62
|
0
|
0
|
59 |
59
|
Raclette Courdavault
|
79
|
0
|
0
|
60 |
60
|
Camembert Pierrot
|
19
|
0
|
0
|
61 |
61
|
Sirop d'érable
|
113
|
0
|
0
|
62 |
62
|
Tarte au sucre
|
17
|
0
|
0
|
63 |
63
|
Vegie-spread
|
24
|
0
|
0
|
64 |
64
|
Wimmers gute Semmelknödel
|
22
|
80
|
0
|
65 |
65
|
Louisiana Fiery Hot Pepper Sauce
|
76
|
0
|
0
|
66 |
66
|
Louisiana Hot Spiced Okra
|
4
|
100
|
0
|
67 |
67
|
Laughing Lumberjack Lager
|
52
|
0
|
0
|
68 |
68
|
Scottish Longbreads
|
6
|
10
|
0
|
69 |
69
|
Gudbrandsdalsost
|
26
|
0
|
0
|
70 |
70
|
Outback Lager
|
15
|
10
|
1
|
71 |
71
|
Flotemysost
|
26
|
0
|
0
|
72 |
72
|
Mozzarella di Giovanni
|
14
|
0
|
0
|
73 |
73
|
Röd Kaviar
|
101
|
0
|
0
|
74 |
74
|
Longlife Tofu
|
4
|
20
|
0
|
75 |
75
|
Rhönbräu Klosterbier
|
125
|
0
|
0
|
76 |
76
|
Lakkalikööri
|
57
|
0
|
0
|
77 |
77
|
Original Frankfurter grüne Soße
|
32
|
0
|
0
|
2. Usage of NULLIF to show compare Phone and Fax.
SQL Server Query 2
SELECT
CustomerID,
ContactName,
ContactTitle,
Fax,
Phone,
-- Compare Phone and Fax. If they are the same, return NULL
NULLIF(Phone, Fax) AS PhoneFaxDifference
FROM Customers
WHERE NULLIF(Phone, Fax) IS NOT NULL
ORDER BY CustomerID;
Create SQL query with SqlQueryBuilder 2
var (sql2, parameters2) = new SqlQueryBuilder()
.Select()
.Columns("CustomerID", "ContactName", "ContactTitle", "Fax", "Phone")
.Column(new NULLIF(new Column("Phone"), new Column("Fax")), "PhoneFaxDifference")
.From("Customers")
.Where(new Where(new IS_NOT_NULL(new NULLIF(new Column("Phone"), new Column("Fax")))))
.OrderBy(new OrderBy().Set(new Column("CustomerID")))
.Build();
Query build by SqlQueryBuilder 2
SELECT CustomerID,
ContactName,
ContactTitle,
Fax,
Phone,
NULLIF (Phone, Fax) AS PhoneFaxDifference
FROM Customers
WHERE NULLIF (Phone, Fax) IS NOT NULL
ORDER BY CustomerID ASC;
Parameters (If used)
Query Results 2:
|
CustomerID |
ContactName |
ContactTitle |
Fax |
Phone |
PhoneFaxDifference |
1 |
ALFKI
|
Maria Anders
|
Sales Representative
|
030-0076545
|
030-0074321
|
030-0074321
|
2 |
ANATR
|
Ana Trujillo
|
Owner
|
(5) 555-3745
|
(5) 555-4729
|
(5) 555-4729
|
3 |
ANTON
|
Antonio Moreno
|
Owner
|
|
(5) 555-3932
|
(5) 555-3932
|
4 |
AROUT
|
Thomas Hardy
|
Sales Representative
|
(171) 555-6750
|
(171) 555-7788
|
(171) 555-7788
|
5 |
BERGS
|
Christina Berglund
|
Order Administrator
|
0921-12 34 67
|
0921-12 34 65
|
0921-12 34 65
|
6 |
BLAUS
|
Hanna Moos
|
Sales Representative
|
0621-08924
|
0621-08460
|
0621-08460
|
7 |
BLONP
|
Frédérique Citeaux
|
Marketing Manager
|
88.60.15.32
|
88.60.15.31
|
88.60.15.31
|
8 |
BOLID
|
Martín Sommer
|
Owner
|
(91) 555 91 99
|
(91) 555 22 82
|
(91) 555 22 82
|
9 |
BONAP
|
Laurence Lebihan
|
Owner
|
91.24.45.41
|
91.24.45.40
|
91.24.45.40
|
10 |
BOTTM
|
Elizabeth Lincoln
|
Accounting Manager
|
(604) 555-3745
|
(604) 555-4729
|
(604) 555-4729
|
11 |
BSBEV
|
Victoria Ashworth
|
Sales Representative
|
|
(171) 555-1212
|
(171) 555-1212
|
12 |
CACTU
|
Patricio Simpson
|
Sales Agent
|
(1) 135-4892
|
(1) 135-5555
|
(1) 135-5555
|
13 |
CENTC
|
Francisco Chang
|
Marketing Manager
|
(5) 555-7293
|
(5) 555-3392
|
(5) 555-3392
|
14 |
CHOPS
|
Yang Wang
|
Owner
|
|
0452-076545
|
0452-076545
|
15 |
COMMI
|
Pedro Afonso
|
Sales Associate
|
|
(11) 555-7647
|
(11) 555-7647
|
16 |
CONSH
|
Elizabeth Brown
|
Sales Representative
|
(171) 555-9199
|
(171) 555-2282
|
(171) 555-2282
|
17 |
DRACD
|
Sven Ottlieb
|
Order Administrator
|
0241-059428
|
0241-039123
|
0241-039123
|
18 |
DUMON
|
Janine Labrune
|
Owner
|
40.67.89.89
|
40.67.88.88
|
40.67.88.88
|
19 |
EASTC
|
Ann Devon
|
Sales Agent
|
(171) 555-3373
|
(171) 555-0297
|
(171) 555-0297
|
20 |
ERNSH
|
Roland Mendel
|
Sales Manager
|
7675-3426
|
7675-3425
|
7675-3425
|
21 |
FAMIA
|
Aria Cruz
|
Marketing Assistant
|
|
(11) 555-9857
|
(11) 555-9857
|
22 |
FISSA
|
Diego Roel
|
Accounting Manager
|
(91) 555 55 93
|
(91) 555 94 44
|
(91) 555 94 44
|
23 |
FOLIG
|
Martine Rancé
|
Assistant Sales Agent
|
20.16.10.17
|
20.16.10.16
|
20.16.10.16
|
24 |
FOLKO
|
Maria Larsson
|
Owner
|
|
0695-34 67 21
|
0695-34 67 21
|
25 |
FRANK
|
Peter Franken
|
Marketing Manager
|
089-0877451
|
089-0877310
|
089-0877310
|
26 |
FRANR
|
Carine Schmitt
|
Marketing Manager
|
40.32.21.20
|
40.32.21.21
|
40.32.21.21
|
27 |
FRANS
|
Paolo Accorti
|
Sales Representative
|
011-4988261
|
011-4988260
|
011-4988260
|
28 |
FURIB
|
Lino Rodriguez
|
Sales Manager
|
(1) 354-2535
|
(1) 354-2534
|
(1) 354-2534
|
29 |
GALED
|
Eduardo Saavedra
|
Marketing Manager
|
(93) 203 4561
|
(93) 203 4560
|
(93) 203 4560
|
30 |
GODOS
|
José Pedro Freyre
|
Sales Manager
|
|
(95) 555 82 82
|
(95) 555 82 82
|
31 |
GOURL
|
André Fonseca
|
Sales Associate
|
|
(11) 555-9482
|
(11) 555-9482
|
32 |
GREAL
|
Howard Snyder
|
Marketing Manager
|
|
(503) 555-7555
|
(503) 555-7555
|
33 |
GROSR
|
Manuel Pereira
|
Owner
|
(2) 283-3397
|
(2) 283-2951
|
(2) 283-2951
|
34 |
HANAR
|
Mario Pontes
|
Accounting Manager
|
(21) 555-8765
|
(21) 555-0091
|
(21) 555-0091
|
35 |
HILAA
|
Carlos Hernández
|
Sales Representative
|
(5) 555-1948
|
(5) 555-1340
|
(5) 555-1340
|
36 |
HUNGC
|
Yoshi Latimer
|
Sales Representative
|
(503) 555-2376
|
(503) 555-6874
|
(503) 555-6874
|
37 |
HUNGO
|
Patricia McKenna
|
Sales Associate
|
2967 3333
|
2967 542
|
2967 542
|
38 |
ISLAT
|
Helen Bennett
|
Marketing Manager
|
|
(198) 555-8888
|
(198) 555-8888
|
39 |
KOENE
|
Philip Cramer
|
Sales Associate
|
|
0555-09876
|
0555-09876
|
40 |
LACOR
|
Daniel Tonini
|
Sales Representative
|
30.59.85.11
|
30.59.84.10
|
30.59.84.10
|
41 |
LAMAI
|
Annette Roulet
|
Sales Manager
|
61.77.61.11
|
61.77.61.10
|
61.77.61.10
|
42 |
LAUGB
|
Yoshi Tannamuri
|
Marketing Assistant
|
(604) 555-7293
|
(604) 555-3392
|
(604) 555-3392
|
43 |
LAZYK
|
John Steel
|
Marketing Manager
|
(509) 555-6221
|
(509) 555-7969
|
(509) 555-7969
|
44 |
LEHMS
|
Renate Messner
|
Sales Representative
|
069-0245874
|
069-0245984
|
069-0245984
|
45 |
LETSS
|
Jaime Yorres
|
Owner
|
|
(415) 555-5938
|
(415) 555-5938
|
46 |
LILAS
|
Carlos González
|
Accounting Manager
|
(9) 331-7256
|
(9) 331-6954
|
(9) 331-6954
|
47 |
LINOD
|
Felipe Izquierdo
|
Owner
|
(8) 34-93-93
|
(8) 34-56-12
|
(8) 34-56-12
|
48 |
LONEP
|
Fran Wilson
|
Sales Manager
|
(503) 555-9646
|
(503) 555-9573
|
(503) 555-9573
|
49 |
MAGAA
|
Giovanni Rovelli
|
Marketing Manager
|
035-640231
|
035-640230
|
035-640230
|
50 |
MAISD
|
Catherine Dewey
|
Sales Agent
|
(02) 201 24 68
|
(02) 201 24 67
|
(02) 201 24 67
|
51 |
MEREP
|
Jean Fresnière
|
Marketing Assistant
|
(514) 555-8055
|
(514) 555-8054
|
(514) 555-8054
|
52 |
MORGK
|
Alexander Feuer
|
Marketing Assistant
|
|
0342-023176
|
0342-023176
|
53 |
NORTS
|
Simon Crowther
|
Sales Associate
|
(171) 555-2530
|
(171) 555-7733
|
(171) 555-7733
|
54 |
OCEAN
|
Yvonne Moncada
|
Sales Agent
|
(1) 135-5535
|
(1) 135-5333
|
(1) 135-5333
|
55 |
OLDWO
|
Rene Phillips
|
Sales Representative
|
(907) 555-2880
|
(907) 555-7584
|
(907) 555-7584
|
56 |
OTTIK
|
Henriette Pfalzheim
|
Owner
|
0221-0765721
|
0221-0644327
|
0221-0644327
|
57 |
PARIS
|
Marie Bertrand
|
Owner
|
(1) 42.34.22.77
|
(1) 42.34.22.66
|
(1) 42.34.22.66
|
58 |
PERIC
|
Guillermo Fernández
|
Sales Representative
|
(5) 545-3745
|
(5) 552-3745
|
(5) 552-3745
|
59 |
PICCO
|
Georg Pipps
|
Sales Manager
|
6562-9723
|
6562-9722
|
6562-9722
|
60 |
PRINI
|
Isabel de Castro
|
Sales Representative
|
|
(1) 356-5634
|
(1) 356-5634
|
61 |
QUEDE
|
Bernardo Batista
|
Accounting Manager
|
(21) 555-4545
|
(21) 555-4252
|
(21) 555-4252
|
62 |
QUEEN
|
Lúcia Carvalho
|
Marketing Assistant
|
|
(11) 555-1189
|
(11) 555-1189
|
63 |
QUICK
|
Horst Kloss
|
Accounting Manager
|
|
0372-035188
|
0372-035188
|
64 |
RANCH
|
Sergio Gutiérrez
|
Sales Representative
|
(1) 123-5556
|
(1) 123-5555
|
(1) 123-5555
|
65 |
RATTC
|
Paula Wilson
|
Assistant Sales Representative
|
(505) 555-3620
|
(505) 555-5939
|
(505) 555-5939
|
66 |
REGGC
|
Maurizio Moroni
|
Sales Associate
|
0522-556722
|
0522-556721
|
0522-556721
|
67 |
RICAR
|
Janete Limeira
|
Assistant Sales Agent
|
|
(21) 555-3412
|
(21) 555-3412
|
68 |
RICSU
|
Michael Holz
|
Sales Manager
|
|
0897-034214
|
0897-034214
|
69 |
ROMEY
|
Alejandra Camino
|
Accounting Manager
|
(91) 745 6210
|
(91) 745 6200
|
(91) 745 6200
|
70 |
SANTG
|
Jonas Bergulfsen
|
Owner
|
07-98 92 47
|
07-98 92 35
|
07-98 92 35
|
71 |
SAVEA
|
Jose Pavarotti
|
Sales Representative
|
|
(208) 555-8097
|
(208) 555-8097
|
72 |
SEVES
|
Hari Kumar
|
Sales Manager
|
(171) 555-5646
|
(171) 555-1717
|
(171) 555-1717
|
73 |
SIMOB
|
Jytte Petersen
|
Owner
|
31 13 35 57
|
31 12 34 56
|
31 12 34 56
|
74 |
SPECD
|
Dominique Perrier
|
Marketing Manager
|
(1) 47.55.60.20
|
(1) 47.55.60.10
|
(1) 47.55.60.10
|
75 |
SPLIR
|
Art Braunschweiger
|
Sales Manager
|
(307) 555-6525
|
(307) 555-4680
|
(307) 555-4680
|
76 |
SUPRD
|
Pascale Cartrain
|
Accounting Manager
|
(071) 23 67 22 21
|
(071) 23 67 22 20
|
(071) 23 67 22 20
|
77 |
THEBI
|
Liz Nixon
|
Marketing Manager
|
|
(503) 555-3612
|
(503) 555-3612
|
78 |
THECR
|
Liu Wong
|
Marketing Assistant
|
(406) 555-8083
|
(406) 555-5834
|
(406) 555-5834
|
79 |
TOMSP
|
Karin Josephs
|
Marketing Manager
|
0251-035695
|
0251-031259
|
0251-031259
|
80 |
TORTU
|
Miguel Angel Paolino
|
Owner
|
|
(5) 555-2933
|
(5) 555-2933
|
81 |
TRADH
|
Anabela Domingues
|
Sales Representative
|
(11) 555-2168
|
(11) 555-2167
|
(11) 555-2167
|
82 |
TRAIH
|
Helvetius Nagy
|
Sales Associate
|
(206) 555-2174
|
(206) 555-8257
|
(206) 555-8257
|
83 |
VAFFE
|
Palle Ibsen
|
Sales Manager
|
86 22 33 44
|
86 21 32 43
|
86 21 32 43
|
84 |
VICTE
|
Mary Saveley
|
Sales Agent
|
78.32.54.87
|
78.32.54.86
|
78.32.54.86
|
85 |
VINET
|
Paul Henriot
|
Accounting Manager
|
26.47.15.11
|
26.47.15.10
|
26.47.15.10
|
86 |
WANDK
|
Rita Müller
|
Sales Representative
|
0711-035428
|
0711-020361
|
0711-020361
|
87 |
WELLI
|
Paula Parente
|
Sales Manager
|
|
(14) 555-8122
|
(14) 555-8122
|
88 |
WHITC
|
Karl Jablonski
|
Owner
|
(206) 555-4115
|
(206) 555-4112
|
(206) 555-4112
|