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.

 All Forums
 SQL Server 2005 Forums
 Transact-SQL (2005)
 FormatName return

Author  Topic 

JeffS23
Posting Yak Master

212 Posts

Posted - 2008-02-26 : 13:42:37
I am currently pulling the following field in my query:

isnull(dbo.FormatName(refdr.Prefix, refdr.First, refdr.Middle, refdr.Last, refdr.Suffix),'')AS Ref_DoctorName

When the field is NULL, its returning a "," value instead of a NULL as I need. Any suggestions on a better format?

TG
Master Smack Fu Yak Hacker

6065 Posts

Posted - 2008-02-26 : 13:56:40
I belive this is a problem inside your function: dbo.FormatName
If you post that code we can help you.

Be One with the Optimizer
TG
Go to Top of Page

JeffS23
Posting Yak Master

212 Posts

Posted - 2008-02-26 : 13:58:06
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO





ALTER FUNCTION FormatName
(@pPrefix VARCHAR(10),
@pFirst VARCHAR(30),
@pMiddle VARCHAR(30),
@pLast VARCHAR(30),
@pSuffix VARCHAR(20)
)
RETURNS VARCHAR(256)
AS
BEGIN
DECLARE @pf VARCHAR(10), @fn VARCHAR(30), @mi VARCHAR(30), @ln VARCHAR(30), @sf VARCHAR(20)
SET @pf = ISNULL(@pPrefix, '')
SET @fn = ISNULL(@pFirst, '')
SET @mi = ISNULL(@pMiddle, '')
SET @ln = ISNULL(@pLast, '')
SET @sf = ISNULL(@pSuffix, '')

IF LEN(@pf) < 1
SET @pf = NULL
IF LEN(@fn) < 1
SET @fn = NULL
IF LEN(@mi) < 1
SET @mi = NULL
IF LEN(@ln) < 1
SET @ln = NULL
IF LEN(@sf) < 1
SET @sf = NULL

RETURN RTRIM
(
LTRIM
(
ISNULL(@ln,'')
+ CASE WHEN @sf IS NOT NULL THEN ' ' + @sf ELSE '' END + ', '
+ CASE WHEN @pf IS NOT NULL THEN @pf + ' ' ELSE '' END
+ CASE WHEN @fn IS NOT NULL THEN @fn + ' ' ELSE '' END
+ LTRIM( ISNULL(@mi,'') )
)
)
END

















GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
Go to Top of Page

visakh16
Very Important crosS Applying yaK Herder

52326 Posts

Posted - 2008-02-26 : 14:14:44
quote:
Originally posted by JeffS23

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO





ALTER FUNCTION FormatName
(@pPrefix VARCHAR(10),
@pFirst VARCHAR(30),
@pMiddle VARCHAR(30),
@pLast VARCHAR(30),
@pSuffix VARCHAR(20)
)
RETURNS VARCHAR(256)
AS
BEGIN
DECLARE @pf VARCHAR(10), @fn VARCHAR(30), @mi VARCHAR(30), @ln VARCHAR(30), @sf VARCHAR(20)
SET @pf = ISNULL(@pPrefix, '')
SET @fn = ISNULL(@pFirst, '')
SET @mi = ISNULL(@pMiddle, '')
SET @ln = ISNULL(@pLast, '')
SET @sf = ISNULL(@pSuffix, '')

IF LEN(@pf) < 1
SET @pf = NULL
IF LEN(@fn) < 1
SET @fn = NULL
IF LEN(@mi) < 1
SET @mi = NULL
IF LEN(@ln) < 1
SET @ln = NULL
IF LEN(@sf) < 1
SET @sf = NULL

RETURN RTRIM
(
LTRIM
(
ISNULL(@ln,'')
+ CASE WHEN @sf IS NOT NULL THEN ' ' + @sf ELSE '' END + ', '
+ CASE WHEN @pf IS NOT NULL THEN @pf + ' ' ELSE '' END
+ CASE WHEN @fn IS NOT NULL THEN @fn + ' ' ELSE '' END
+ LTRIM( ISNULL(@mi,'') )
)
)
END

















GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO


what is the "," for? i think its the culprit. When all fields are NULL its returning this "," alone.
Go to Top of Page

JeffS23
Posting Yak Master

212 Posts

Posted - 2008-02-26 : 14:22:52
That was the culprit. Thanks a million.
Go to Top of Page

TG
Master Smack Fu Yak Hacker

6065 Posts

Posted - 2008-02-26 : 14:26:09
Are you sure? Don't you need that to seperate (Last, First) when they exist?

Be One with the Optimizer
TG
Go to Top of Page
   

- Advertisement -