SQL Server имеет плохую функциональность обработки строк. Вот почему лучше обрабатывать данные, когда они поступают в базу данных.
Тем не менее, вы можете делать то, что вы хотите. Вот один из методов:
select t.*, left(v1.str, charindex(' ', v1.str + ' ')) as codigo_str
from (values ('[header]nombre=ATC Cargas MZA/TUC/SGO.TN.03/03/10 DEV codigo=ACLGO target=0 activo=1 VigenciaD')) t(str) cross apply
(values (stuff(t.str, 1, charindex('codigo=', t.str + 'coldigo=') - 1, ''))) v1(str);
Это отсекает строку перед 'codigo='
. Затем он использует left()
, чтобы взять все до первого пробела.
Использование конкатенации в charindex()
делает это безопасным, если 'codigo='
не находится в строке или не сопровождается пробелом.