我必须问你一些与MSSQL有关的问题。
我有一个名为Command(VARCHAR)
的列,它是某个名为TB_Commander
的表的一部分。
此列包含如下结果,例如(rows):
1.Delete o:2312312, c=312321
2.Add o:342342344, c=5
顺便说一句。我想做的是选择子字符串从这行,其中只包括'o:2312312'和行号2,只有'o:342342344'。
我被卡在这里了:
select
SUBSTRING(Command,PATINDEX('%1%',Command),
CHARINDEX(',',Command,PATINDEX('%o=%',Command))-0) as OperationID
from TB_Commander
where IdRow = 921321
对不起我的英语…
试试;)
select
substring(command,
patindex('%o:%', command) - 2,
patindex('%, c%', command)) as OperationID
from TB_Commander
where IdRow = 921321
此解决方案仅返回您需要的数据,并考虑到用于提取所需数据的模式的长度:
SELECT
SUBSTRING(command,
PATINDEX('%o:%', command) + LEN('o:'),
PATINDEX('%, c%', [FiscalizationRequest]) - PATINDEX('%o:%',[FiscalizationRequest]) - LEN('o:')
) as OperationID
FROM TB_Commander;
declare @i int
declare @str varchar(1000)
set @str='interesting data'
declare @pattern varchar(1000)
set @pattern='eres'
SELECT @i=PATINDEX('%ter%', @str);
select substring(@str,@i-4,len(@pattern)+4)