使用sql在substring之前获取字符串?

时间:2016-03-18 12:00:43

标签: sql sql-server substring

这是我正在使用的字符串

   SET  @str = 025-121-3453

我希望在表达之前和使用sql

之后的表达式中获取字符串的一部分

假设表现出来

  SELECT SUBSTRING(String, 
 LEN(LEFT(String, CHARINDEX ('121', String))) + 1, LEN(String) 
- LEN(LEFT(String,
 CHARINDEX ('121', String))) - LEN(RIGHT(String, LEN(String) -

   CHARINDEX ('121', String))) - 1) FROM StringPatternData WHERE String =  '025-121-3453';

输出

在1个查询输出中将是'025-'&在另一个'-3453'

2 个答案:

答案 0 :(得分:0)

您可以使用一些内置函数来执行此操作:

DECLARE @str VARCHAR(100) = '025-121-3453'

SELECT  LEFT(@str, CHARINDEX('121', @str) - 1) ,
        RIGHT(@str, CHARINDEX('121', REVERSE(@str)) - 1)

请注意,您必须在查询的第二部分中提供反转模式。即如果按123拆分,则第二种模式应为321

答案 1 :(得分:0)

只是为了好玩,这是你可以做到的另一种方式。

DECLARE @str VARCHAR(100) = '025-121-3453'

select PARSENAME(replace(@str, '-', '.'), 3)
    , PARSENAME(replace(@str, '-', '.'), 1)