使用 T-SQL 从列中提取第一个 argue

Extract first argue from column with T-SQL

我需要从以下字符串中提取第一个参数:"\PATH\TO\PACKAGE"

/SQL "\PATH\TO\PACKAGE" /SERVER "0.0.0.0,0000" /USER usr /PASSWORD "passw" /DECRYPT pass2 /CHECKPOINTING OFF /REPORTING E

这是存储在 SQL 服务器 msdb.sysjobsteps.command

的列

有没有办法通过使用正则表达式或用空格分割来实现?

基于我们的 one 示例,几个 CHARINDEXs 一些简单的字符串操作就可以完成工作:

DECLARE @YourString nvarchar(500) = N'/SQL "\PATH\TO\PACKAGE" /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);

如果参数不改变位置,那么您可以构建更稳健的解决方案。