43

i am trying to extract a substring(everything before a hyphen, in this case) from a string as shown below:

Net Operating Loss - 2007
Capital Loss - 1991
Foreign Tax Credit - 1997

and want the year and name(substring before hyphen) separately, using SQL server Management studio 2008. Any advice? or idea how i can achieve this?

LittleBobbyTables - Au Revoir
  • 32,008
  • 25
  • 109
  • 114
CarbonD1225
  • 851
  • 6
  • 24
  • 39

3 Answers3

83
DECLARE @test nvarchar(100)

SET @test = 'Foreign Tax Credit - 1997'

SELECT @test, left(@test, charindex('-', @test) - 2) AS LeftString,
    right(@test, len(@test) - charindex('-', @test) - 1)  AS RightString
LittleBobbyTables - Au Revoir
  • 32,008
  • 25
  • 109
  • 114
7
DECLARE @dd VARCHAR(200) = 'Net Operating Loss - 2007';

SELECT SUBSTRING(@dd, 1, CHARINDEX('-', @dd) -1) F1,
       SUBSTRING(@dd, CHARINDEX('-', @dd) +1, LEN(@dd)) F2
johnnyRose
  • 7,310
  • 17
  • 40
  • 61
NikRED
  • 1,175
  • 2
  • 21
  • 39
1

This can achieve using two SQL functions- SUBSTRING and CHARINDEX

You can read strings to a variable as shown in the above answers, or can add it to a SELECT statement as below:

SELECT SUBSTRING('Net Operating Loss - 2007' ,0, CHARINDEX('-','Net Operating Loss - 2007'))
rchacko
  • 1,965
  • 23
  • 24