如何检索两个相似字符之间的值
How to retrieve value between two similar chars
我有以下示例数据和我到目前为止尝试过的查询 -
DECLARE @X TABLE (TAG VARCHAR(MAX))
INSERT INTO @X
VALUES ('59D:$%$%$%$%^MESSAGE1^$%$%$%$%'),
('59D:--^MESSAGE2^$%$%$%$%')
SELECT *
FROM @X
SELECT SUBSTRING(TAG,CHARINDEX('^',TAG)+1,LEN(TAG)-CHARINDEX('^',TAG))
FROM @X;
我想select^
之间的一切。所以在这种情况下,我的输出应该是 MESSAGE1
和 MESSAGE2
select
substring(tag,charindex('^',tag)+1, len(tag) - charindex('^',reverse(tag)) - charindex('^',tag))
from @x
您可能还想排除字符串中少于 2 个 ^
的情况。在这种情况下,您应该添加一个 where
子句
WHERE len(tag) - len(replace(tag,'^','')) >= 2
我有以下示例数据和我到目前为止尝试过的查询 -
DECLARE @X TABLE (TAG VARCHAR(MAX))
INSERT INTO @X
VALUES ('59D:$%$%$%$%^MESSAGE1^$%$%$%$%'),
('59D:--^MESSAGE2^$%$%$%$%')
SELECT *
FROM @X
SELECT SUBSTRING(TAG,CHARINDEX('^',TAG)+1,LEN(TAG)-CHARINDEX('^',TAG))
FROM @X;
我想select^
之间的一切。所以在这种情况下,我的输出应该是 MESSAGE1
和 MESSAGE2
select
substring(tag,charindex('^',tag)+1, len(tag) - charindex('^',reverse(tag)) - charindex('^',tag))
from @x
您可能还想排除字符串中少于 2 个 ^
的情况。在这种情况下,您应该添加一个 where
子句
WHERE len(tag) - len(replace(tag,'^','')) >= 2