Solved

Issues with NULL

Posted on 2010-09-01
20
408 Views
Last Modified: 2012-05-10
Experts,

I have an issue with NULL values in my database. I have in my contacts database, a table with columns

Address1, Address2, Address3, Posttown etc.

For a function I am trying to return the data using the following Select statement

Select
Name,
(Address1 + ',' + Address2 + ',' + Address3 + ',' + Posttown) AS Address,
Mobile_number
From Table1

I get the name and mobile number, and all the addresses where all the columns have been filled in.
But I don't get why, when one or more of the columns contain a null value, I get the whole thing returned as a null.

Can anyone help me out. Thanks in advance.

0
Comment
Question by:Planmaster
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 7
  • 3
  • 2
  • +4
20 Comments
 
LVL 41

Accepted Solution

by:
ralmada earned 125 total points
ID: 33578391

Select 
Name,
(isnull(Address1, '') + ',' + isnull(Address2,'') + ',' + isnull(Address3,'') + ',' + isnull(Posttown,'')) AS Address,
Mobile_number
From Table1

Open in new window

0
 
LVL 6

Assisted Solution

by:Jerryuk007
Jerryuk007 earned 125 total points
ID: 33578396
Use something like:

Select
isnull(Name,'') as [Name],
(isNull(Address1,'') + ',' + isNull(Address2,'') + ',' + isNull(Address3,'') + ',' + isNull(Posttown,'')) AS Address,
Mobile_number
From Table1
0
 
LVL 41

Expert Comment

by:ralmada
ID: 33578400
>> why, when one or more of the columns contain a null value, I get the whole thing returned as a null. <<
Because something + NULL = NULL
so you need to use the trick I've shown above

0
Microsoft Certification Exam 74-409

Veeam® is happy to provide the Microsoft community with a study guide prepared by MVP and MCT, Orin Thomas. This guide will take you through each of the exam objectives, helping you to prepare for and pass the examination.

 
LVL 10

Expert Comment

by:Jini Jose
ID: 33578426
you cannot add a null value to a string variable.
0
 
LVL 6

Expert Comment

by:LCSandman8301
ID: 33578447
agreed the reason for this is because by adding to null the entire thing ends up null

however i would suggest a change in the is null to make the commas work correctly

try select (isnull(address1+',', '') + isnull(address2+',','') + isnull(address3+',','')+ isnull(posttown, ''))

otherwise the coalesce function could be used as well
0
 

Expert Comment

by:truelight9
ID: 33578546
/*
Simply place this statement at the top of your script, before any Query or SELECT Statement
*/
SET CONCAT_NULL_YIELDS_NULL OFF

Select
Name,
(Address1 + ',' + Address2 + ',' + Address3 + ',' + Posttown) AS Address,
Mobile_number
From Table1
0
 
LVL 41

Expert Comment

by:ralmada
ID: 33578592
truelight9
with all due respect, but you should always try to avoid using that functionality.
Per BOL:

In a future version of SQL Server CONCAT_NULL_YIELDS_NULL will always be ON and any applications that explicitly set the option to OFF will generate an error. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.
http://msdn.microsoft.com/en-us/library/ms176056.aspx 
So you don't want to recommend something that will be removed...
0
 
LVL 75

Expert Comment

by:Anthony Perkins
ID: 33582860
gmailjini,

>>you cannot add a null value to a string variable.<<
Sure you can... You just may not get the result you expected, but there is nothing illegal about it.
0
 
LVL 41

Expert Comment

by:ralmada
ID: 33587438
Well, I will have to object this. Jerryuk007 is exactly the same as mine. Can you please advise?
0
 
LVL 6

Expert Comment

by:Jerryuk007
ID: 33587489
@ralmada

As you can see from the submit time, we were typing the answer likely at the same time... Though my answer also took care of the first column being null even if that was not the requirements.

I will let the Question Author judge.

Jerry
0
 
LVL 41

Expert Comment

by:ralmada
ID: 33587549
>>Though my answer also took care of the first column being null even if that was not the requirements.<< You couldn't have put it more clear. Plus the author mentioned that he get correct results for the Name column, so the isnull on the Name column is completely unnecessary.
0
 
LVL 41

Expert Comment

by:ralmada
ID: 33589085
0
 
LVL 6

Expert Comment

by:Jerryuk007
ID: 33589185
Agreed with ralmada' suggestion.
0
 

Author Closing Comment

by:Planmaster
ID: 33627761
Apology for the late clearing.
0
 
LVL 41

Expert Comment

by:ralmada
ID: 33629321
Planmaster, with all due respect but you stopped the autoclose process accepting a solution that I have already given to you. In addition, you have not indicated why you've chosen that answer (considering that it's the same as mine).
 
0
 

Author Comment

by:Planmaster
ID: 33681818
Dear Experts,

I thought I had split the points. I do apologise for the oversight on my part.
0

Featured Post

Efficient way to get backups off site to Azure

This user guide provides instructions on how to deploy and configure both a StoneFly Scale Out NAS Enterprise Cloud Drive virtual machine and Veeam Cloud Connect in the Microsoft Azure Cloud.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In this article I will describe the Copy Database Wizard method as one possible migration process and I will add the extra tasks needed for an upgrade when and where is applied so it will cover all.
Use this article to create a batch file to backup a Microsoft SQL Server database to a Windows folder.  The folder can be on the local hard drive or on a network share.  This batch file will query the SQL server to get the current date & time and wi…
This video shows, step by step, how to configure Oracle Heterogeneous Services via the Generic Gateway Agent in order to make a connection from an Oracle session and access a remote SQL Server database table.
Via a live example, show how to set up a backup for SQL Server using a Maintenance Plan and how to schedule the job into SQL Server Agent.

739 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question