这是我正在使用的字符串
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'
答案 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)