Это выглядит плохо, но работает.Сначала переверните строку, найдите '/ U' (если его там нет, потому что значение U находится в конце, оно все еще должно работать), найдите следующую '/', возьмите эти две позиции, перетащите подстроку между ними иобратное значение.Если в строке несколько значений U, это не сработает.Вы должны были бы зациклить это.
DECLARE @test1 VARCHAR(100) = 'PRODUCT/100U/PRODUCT/1000A/10000E'
DECLARE @test2 VARCHAR(100) = 'PRODUCT/100000A/PRODUCT/10U'
DECLARE @test3 VARCHAR(100) = 'PRODUCT/ITEM/1000U/PRODUCT/100000000E'
DECLARE @test4 VARCHAR(100) = 'PRODUCT/100000A/PRODUCT/423587U'
--Reverse the string to find '/U'
----We want to do this to find the 'Starting position' for the SUBSTRING function
----Add 2 to get past the /U
SELECT REVERSE(@test1)
SELECT CHARINDEX('/U', REVERSE(@test1))+2
--Find the next '/' in the reversed string using the /U location as the starting location
----Have to add 1 to get past the length of '/'
SELECT CHARINDEX('/', REVERSE(@test1), CHARINDEX('/U', REVERSE(@test1))+1)
--Get the string between these two values
----Need the reversed string, the starting position, and the difference between the end and start(meaning length of the string to return)
----Again, have to do a little adjustment to the numbers to remove the / and /U
SELECT SUBSTRING(REVERSE(@test1), CHARINDEX('/U', REVERSE(@test1))+2, CHARINDEX('/', REVERSE(@test1), CHARINDEX('/U', REVERSE(@test1))+1) - CHARINDEX('/U', REVERSE(@test1))-2)
--Reverse the whole thing to get the final value
SELECT REVERSE(SUBSTRING(REVERSE(@test1), CHARINDEX('/U', REVERSE(@test1)) +2, CHARINDEX('/', REVERSE(@test1), CHARINDEX('/U', REVERSE(@test1))+1) - CHARINDEX('/U', REVERSE(@test1))-2))
SELECT REVERSE(SUBSTRING(REVERSE(@test1), CHARINDEX('/U', REVERSE(@TEST1)) +2, CHARINDEX('/', REVERSE(@TEST1), CHARINDEX('/U', REVERSE(@TEST1))+1) -CHARINDEX('/U', REVERSE(@TEST1))-2))
SELECT REVERSE(SUBSTRING(REVERSE(@TEST2), CHARINDEX('/U', REVERSE(@TEST2)) +2, CHARINDEX('/', REVERSE(@TEST2), CHARINDEX('/U', REVERSE(@TEST2))+1) -CHARINDEX('/U', REVERSE(@TEST2))-2))
SELECT REVERSE(SUBSTRING(REVERSE(@TEST3), CHARINDEX('/U', REVERSE(@TEST3)) +2, CHARINDEX('/', REVERSE(@TEST3), CHARINDEX('/U', REVERSE(@TEST3))+1) -CHARINDEX('/U', REVERSE(@TEST3))-2))
SELECT REVERSE(SUBSTRING(REVERSE(@TEST4), CHARINDEX('/U', REVERSE(@TEST4)) +2, CHARINDEX('/', REVERSE(@TEST4), CHARINDEX('/U', REVERSE(@TEST4))+1) -CHARINDEX('/U', REVERSE(@TEST4))-2))