I need to extract the first argument: "PATHTOPACKAGE"
from the string below:
/SQL "PATHTOPACKAGE" /SERVER "0.0.0.0,0000" /USER usr /PASSWORD "passw" /DECRYPT pass2 /CHECKPOINTING OFF /REPORTING E
which is a column stored at SQL Server msdb.sysjobsteps.command
Is there a way to do it by using Regex or Spliting it by blank spaces?
Advertisement
Answer
Based on the one example we have, a couple of CHARINDEX
s a little bit of simple string manipulation gets the job done:
DECLARE @YourString nvarchar(500) = N'/SQL "PATHTOPACKAGE" /SERVER "0.0.0.0,0000" /USER usr /PASSWORD "passw" /DECRYPT pass2 /CHECKPOINTING OFF /REPORTING E'; SELECT LEFT(STUFF(V.YourString,1,CI1.I,''),CI2.I-CI1.I-1) FROM (VALUES(@YourString))V(YourString) CROSS APPLY(VALUES(CHARINDEX(' ',V.YourString)))CI1(I) CROSS APPLY(VALUES(CHARINDEX(' /',V.YourString,CI1.I)))CI2(I);
If parameters don’t change position, then you can build a more robust solution.