web-dev-qa-db-fra.com

isoler une sous-chaîne dans une chaîne avant un symbole dans SQL Server 2008

j'essaie d'extraire une sous-chaîne (tout avant un trait d'union, dans ce cas) d'une chaîne comme indiqué ci-dessous:

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

et voulez l'année et le nom (sous-chaîne avant le trait d'union) séparément, en utilisant SQL Server Management Studio 2008. Un conseil? ou idée comment je peux y arriver?

22
CarbonD1225
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
55
LittleBobbyTables
DECLARE @dd VARCHAR(200) = 'Net Operating Loss - 2007';

SELECT SUBSTRING(@dd, 1, CHARINDEX('-', @dd) -1) F1,
       SUBSTRING(@dd, CHARINDEX('-', @dd) +1, LEN(@dd)) F2
4
NikRED