如何在SQL中向后读取字符串? (不是REVERSE)

时间:2017-06-07 18:03:44

标签: sql sql-server string tsql

所以我有这两个字符串。

@a =  SALE:1:39
@b =  SALE:12

我必须比较两个字符串。 比较:

LEFT part of @a = SALE:1
RIGHT Part of @a = 39

LEFT part of @b = SALE
RIGHT Part of @b = 12

到目前为止,我所做的是

RIGHT(@a, CHARINDEX(':', REVERSE(@a))-1)<br>
RIGHT(@b, CHARINDEX(':', REVERSE(@b))-1)<br>
LEFT(@a, CHARINDEX(':', @a)-1)<br>
LEFT(@b, CHARINDEX(':',@b)-1).<br>

RESULT

39&lt; - LEFT @a
12&lt; - LEFT @b
SALE&lt; - RIGHT @a,应该 SALE:1
出售&lt; - 右@b
销售:1:39
SALE:12

我想在最后一次出现的:

上拆分字符串

如何在MS SQL Server中实现?

所以基本上我想在这里实现的是,我想比较这两个字符串。

IF @a AND @b are non-numeric<br> THEN IF @a AND @b LIKE '%:%'
IF So Then is the left part of @a = left part of @b
IF YES Then is the Right part of @b = Right part of @a + 1

1 个答案:

答案 0 :(得分:0)

declare @a varchar (100) = 'SALE:1:39'
, @b varchar(100) = 'SALE:12'

select
LEFT(@a, len(@a) - charindex(':', REVERSE(@a))) LeftFromA
, RIGHT(@a, case when charindex(':', REVERSE(@a)) - 1 < 0 then 0 else charindex(':', REVERSE(@a)) - 1 end) RightFromA
, LEFT(@b, len(@b) - charindex(':', REVERSE(@b))) LeftFromB
, RIGHT(@b, case when charindex(':', REVERSE(@b)) - 1 < 0 then 0 else charindex(':', REVERSE(@b)) - 1 end) RightFromB