我有一张这样的表
ID TYPE
12266 XXL1L;XXL1L
34153 TOLT40ND;TOLT40ND
63939 TOLT40ND;TOLT40ND;POSTHT128
63940 TOLT20ND;TOLT20ND
90908 TOLT40ND;TOLT40ND;POSTHT128
90909 TOLT40ND;TOLT40ND;POSTHT128
59121 TOLT30ND;TOLT30ND;MAR1639L;MAR1639L
59131 MAR1639L;MAR1639L
152472 TOLT30ND;TOLT30ND
我只需要Type
中的最后一项这是一个结果表
ID TYPE
12266 XXL1L
34153 TOLT40ND
63939 POSTHT128
63940 TOLT20ND
90908 POSTHT128
90909 POSTHT128
59121 MAR1639L
59131 MAR1639L
15247 TOLT30ND
答案 0 :(得分:1)
这会根据您使用的平台而有所改变,但是可以在所有平台上运行的想法是执行以下操作:反转字符串并找到第一个;
的位置然后在正常的字符串中取那个大小的正确字符。所以函数名称从平台变为平台,但类似这样的
RIGHT(TYPE, STRPOS(REVERSE(TYPE),';'))
注意...... aaron指出你可能需要从strpos的返回中减去一个不包括';'在输出中。
答案 1 :(得分:0)
这就是我在SQL Server中要做的事情:
WITH test AS
(
SELECT 12266 ID, 'XXL1L;XXL1L' Type UNION all
SELECT 34153 , 'TOLT40ND;TOLT40ND' UNION all
SELECT 63939 , 'TOLT40ND;TOLT40ND;POSTHT128' UNION all
SELECT 63940 , 'TOLT20ND;TOLT20ND' UNION all
SELECT 90908 , 'TOLT40ND;TOLT40ND;POSTHT128' UNION all
SELECT 90909 , 'TOLT40ND;TOLT40ND;POSTHT128' UNION all
SELECT 59121 , 'TOLT30ND;TOLT30ND;MAR1639L;MAR1639L' UNION all
SELECT 59131 , 'MAR1639L;MAR1639L' UNION all
SELECT 152472, 'TOLT30ND;TOLT30ND' UNION ALL
SELECT 123, 'TEST;;TEST'
)
SELECT SUBSTRING(test.Type, LEN(test.Type) + 2 - CHARINDEX(';', REVERSE(test.Type)), LEN(test.Type))
FROM test