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)

Name Value

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