Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
vicpal25
Starting Member
21 Posts |
Posted - 2008-06-03 : 12:42:59
|
| I am working on a Function that takes multiple parameters. I have a query that populates a temporary table, and then it processes some logic. My question is, if the parameter is passed as null, I dont want the query to be affected by this null value. Rather, I would like to not pass it at all to the query. So if the parameter is NULL, dont pass it through the query. I have the following but its not compiling right:SELECT bom.pEngr_BOM_ID , bom.fEngr_Item_ID, det.pEngr_BOM_Detail_ID, 1, bom.Bill_Type, bom.Rev_Ltr, bom.Series_LtrFROM dbo.Engr_BOM_Control bom WITH (nolock)INNER JOIN dbo.Engr_BOM_Detail det WITH (nolock)ON det.fEngr_BOM_ID=bom.pEngr_BOM_IDWHERE bom.pEngr_BOM_ID=@v_pEngr_BOM_IDAND det.fEngr_BOM_ID=@v_pEngr_BOM_ID CASE WHEN @v_Bill_Type IS NOT NULL THENAND bom.Bill_Type=@v_Bill_Type END |
|
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2008-06-03 : 12:55:40
|
use like this:-SELECT bom.pEngr_BOM_ID , bom.fEngr_Item_ID, det.pEngr_BOM_Detail_ID, 1, bom.Bill_Type, bom.Rev_Ltr, bom.Series_LtrFROM dbo.Engr_BOM_Control bom WITH (nolock)INNER JOIN dbo.Engr_BOM_Detail det WITH (nolock)ON det.fEngr_BOM_ID=bom.pEngr_BOM_IDWHERE bom.pEngr_BOM_ID=@v_pEngr_BOM_IDAND det.fEngr_BOM_ID=@v_pEngr_BOM_IDAND (bom.Bill_Type=@v_Bill_Type OR @v_Bill_Type IS NULL)END |
 |
|
|
tkizer
Almighty SQL Goddess
38200 Posts |
Posted - 2008-06-03 : 12:55:59
|
| USE COALESCE function to handle NULL values. Set the column equal to itself when the parameter is null, so you'll get a 1=1 type thing.Tara KizerMicrosoft MVP for Windows Server System - SQL Serverhttp://weblogs.sqlteam.com/tarad/Database maintenance routines:http://weblogs.sqlteam.com/tarad/archive/2004/07/02/1705.aspx |
 |
|
|
vicpal25
Starting Member
21 Posts |
Posted - 2008-06-03 : 14:16:01
|
quote: Originally posted by tkizer USE COALESCE function to handle NULL values. Set the column equal to itself when the parameter is null, so you'll get a 1=1 type thing.Tara KizerMicrosoft MVP for Windows Server System - SQL Serverhttp://weblogs.sqlteam.com/tarad/Database maintenance routines:http://weblogs.sqlteam.com/tarad/archive/2004/07/02/1705.aspx
COALESCE function works beautifully!SELECT bom.pEngr_BOM_ID , bom.fEngr_Item_ID, det.pEngr_BOM_Detail_ID, 1, bom.Bill_Type, bom.Rev_Ltr, bom.Series_LtrFROM dbo.Engr_BOM_Control bom WITH (nolock)INNER JOIN dbo.Engr_BOM_Detail det WITH (nolock)ON det.fEngr_BOM_ID=bom.pEngr_BOM_IDWHERE bom.pEngr_BOM_ID=@v_pEngr_BOM_IDAND det.fEngr_BOM_ID=@v_pEngr_BOM_IDAND bom.Bill_Type = COALESCE(@v_Bill_Type, bom.Bill_Type)good stuff! Thanks! |
 |
|
|
|
|
|
|
|