在SQL Server 2008中的符号之前隔离字符串中的子字符串

时间:2012-07-25 13:39:44

标签: sql-server sql-server-2008 tsql substring

我正在尝试从字符串中提取子字符串(在这种情况下,在连字符之前的所有内容),如下所示:

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

并使用SQL Server Management studio 2008分别想要年份和名称(连字符前的子串)。有什么建议吗?或者想法我怎么能做到这一点?

3 个答案:

答案 0 :(得分:55)

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

答案 1 :(得分:4)

DECLARE @dd VARCAHR(200) = 'Net Operating Loss - 2007';

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

答案 2 :(得分:0)

这可以使用两个 SQL 函数 SUBSTRING 和 CHARINDEX 来实现

您可以按照上述答案将字符串读取到变量中,也可以将其添加到 SELECT 语句中,如下所示:

SELECT SUBSTRING('Net Operating Loss - 2007' ,0, CHARINDEX('-','Net Operating Loss - 2007'))