Help with MS SQL Right Function Using the Len Function

Hi

I have a column in a table which is made up of reference numbers following a transaction matching process.  It's there to form part of an audit trail.  At the moment, it might look something like ", 88654, 12973, 84755".  It might also be empty (if no transactions matched).  I want to get rid of the comma and space at the beginning.  I don't really want to do this as part of the original run as it would slow it down, so thought it would be easiest to do a tidy up afterwards.

The problem is that I can't get the right function to work if I use the len function.  I've tried various, but at the moment, I've got:

UPDATE SAS_T_1213_RemAds SET remRef = RIGHT(conCatRem,LEN(conCatRem)-2) WHERE conCatRem IS NOT NULL;

I get the error message:

Msg 536, Level 16, State 4, Line 5
Invalid length parameter passed to the RIGHT function.

Can anyone help with this please?

Thanks
Sarah
ScuzzyJoAsked:
Who is Participating?
 
Randy PooleCommented:
try this, the value may not be null, but may be a blank or under 2 characters
UPDATE SAS_T_1213_RemAds SET remRef = RIGHT(conCatRem,LEN(conCatRem)-2) WHERE Len(conCatRem+'')>2

Open in new window

0
 
SStoryCommented:
Try something like this:
UPDATE SAS_T_1213_RemAds 
SET remRef = SUBSTRING(remRef,3,len(remRef)-2) 
WHERE conCatRem IS NOT NULL;

Open in new window

0
 
Vikas GargBusiness Intelligence DeveloperCommented:
Hi,

You need to check the length of conCatRem before passing it to the Right function so that if the Lengh is less then 2 Right function would not get any -Ve Value which is causing error

UPDATE SAS_T_1213_RemAds SET remRef = CASE WHEN LEN(conCatRem) >= 2 THNE (RIGHT(conCatRem,LEN(conCatRem)-2) ELSE conCatRem END  WHERE conCatRem IS NOT NULL;

Open in new window

0
 
PortletPaulfreelancerCommented:
what is the defined length of that column? let's say it is 4000

test it first, always backup...
select
SUBSTRING(remRef ,3, 4000)
from SAS_T_1213_RemAds 
where remRef like ' ,%'
;

UPDATE SAS_T_1213_RemAds 
SET remRef = SUBSTRING(remRef ,3, 4000)
where remRef like ' ,%'

Open in new window

0
 
ScuzzyJoAuthor Commented:
Thanks to everyone who replied.  All the answers made sense to me, but Randy got there first and his solution works perfectly :-)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.