|
|
|
SSC-Enthusiastic
      
Group: General Forum Members
Last Login: Monday, March 25, 2013 5:50 AM
Points: 133,
Visits: 609
|
|
Hi, I would like to return the results from Varchar field where there are spaces in the field. Is there a way to limit results to where there are empty spaces or characters such as '_ , *, .)
Any links to string manipulation would also be appreciated.
Thanks
|
|
|
|
|
Ten Centuries
      
Group: General Forum Members
Last Login: Thursday, January 26, 2012 5:26 AM
Points: 1,367,
Visits: 1,585
|
|
You can get the location of the characters you are looking for by using patindex e.g.
declare @a varchar(10) set @a = 'abcd a_b'
select patindex('%[ _]%', @a)
If you need to remove things, you can use replace, substring, ...
You can read on string manipulation functions that are available in T-SQL on http://msdn.microsoft.com/en-us/library/ms181984.aspx
However, if you need something more complicated, you may way to look at CLR functions.
Regards, Andras
Andras Belokosztolszki, MCPD, PhD GoldenGate Software
|
|
|
|
|
SSC-Enthusiastic
      
Group: General Forum Members
Last Login: Monday, March 25, 2013 5:50 AM
Points: 133,
Visits: 609
|
|
Thank you very much for this, this is exactly what i'm trying to accomplish.
|
|
|
|
|
Forum Newbie
      
Group: General Forum Members
Last Login: Wednesday, May 15, 2013 5:47 AM
Points: 8,
Visits: 205
|
|
|
|
|
|
SSChasing Mays
      
Group: General Forum Members
Last Login: Sunday, March 04, 2012 4:02 AM
Points: 660,
Visits: 134
|
|
declare @a varchar(10) set @a = 'abcd a_b'
select patindex('%[ _]%', @a)
An alternative would be to use
declare @a varchar(10) set @a = 'abcd a_b' select charindex('_', @a)
I don't see a difference between the 2 functions. I posted this code as this is what I would have gone for first. Maybe someone can provide more info?
|
|
|
|
|
SSCertifiable
       
Group: General Forum Members
Last Login: Yesterday @ 11:13 AM
Points: 6,351,
Visits: 5,369
|
|
The patindex is checking for two chars _ and space
charindex('_', @a) will return position of first _ char patindex('%[ _]%', @a) will return position of EITHER _ or space
charindex('_', @a) and patindex('%[_]%', @a) would give the same result (ie no space)
if checking for presence of _ and space then CHARINDEX('_', @a) > 0 AND CHARINDEX(' ', @a) > 0 would be the same as PATINDEX('%[ _]%', @a) > 0
and it would get worse if you wanted to check for the letters a to f as you would have to OR 6 CHARINDEX or use PATINDEX('%[a-f]%', @a)
Far away is close at hand in the images of elsewhere. Anon.
|
|
|
|
|
SSChasing Mays
      
Group: General Forum Members
Last Login: Sunday, March 04, 2012 4:02 AM
Points: 660,
Visits: 134
|
|
Ahem.....
Just did some investigating....
declare @a varchar(10) set @a = 'abcd a_b' select charindex('cd', @a) -- matches a pattern - 'cd' is found in @a select charindex('ce', @a) -- matches a pattern - 'ce' not found in @a select patindex('%[zce]%', @a) -- treats each of the letters as seperate and tries to find any --1 of them in @a select patindex('%[ce]%', @a) -- same outcome as above
Still let me know if there is any other difference between the 2. It may help someone else reading this post.
|
|
|
|
|
SSChasing Mays
      
Group: General Forum Members
Last Login: Sunday, March 04, 2012 4:02 AM
Points: 660,
Visits: 134
|
|
Thanks David.
Didnt see your reply there as I was typing out mine. The guys here on SQL ServerCentral reply really quick
|
|
|
|
|
SSCertifiable
       
Group: General Forum Members
Last Login: Yesterday @ 11:13 AM
Points: 6,351,
Visits: 5,369
|
|
You're welcome
Far away is close at hand in the images of elsewhere. Anon.
|
|
|
|