#sql-server
#sql-server
Вопрос:
У меня есть строка в таблице, которую мне нужно разделить на разные столбцы, это моя строка;
"VEX_NAME=LILIAN BRIGHT||VEX_ID=3006030"
Я хотел бы быть разделен в формате ниже
VEX_ID | VEX_NAME
-------- ----------------
3006030 | LILIAN BRIGHT
Комментарии:
1. Какую версию SQL Server вы используете — это будет иметь отношение к этому ответу
2. Sql server 2012
Ответ №1:
Вы можете использовать substring()
amp; charindex()
:
select substring(col, charindex('VEX_ID=', col) 7, len(col)) as VEX_ID,
substring(col, charindex('VEX_NAME=', col) 9,
charindex('||', col) - (charindex('VEX_NAME=', col) 9 )) as VEX_NAME
from table t;
Однако вы также можете использовать APPLY
:
select substring(col, VEX_ID, len(col)) as VEX_ID,
substring(col, VEX_NAME, pipe - VEX_NAME) as VEX_NAME
from table t cross apply
( values (charindex('VEX_ID=', col) 7, charindex('VEX_NAME=', col) 9, charindex('||', col))
) tt(VEX_ID, VEX_NAME, pipe);