我不得不问你一些与MSSQL有关的东西。
所以,我有一个名为Command(VARCHAR)
的列,它是一个名为TB_Commander
的表的一部分。
此列包含例如(行)的结果:
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
抱歉我的英文......
非常感谢...
答案 0 :(得分:1)
试试这个;)
select
substring(command,
patindex('%o:%', command) - 2,
patindex('%, c%', command)) as OperationID
from TB_Commander
where IdRow = 921321
答案 1 :(得分:0)
此解决方案仅返回您需要的数据,并考虑用于提取所需数据的模式的帐户长度:
SELECT
SUBSTRING(command,
PATINDEX('%o:%', command) + LEN('o:'),
PATINDEX('%, c%', [FiscalizationRequest]) - PATINDEX('%o:%',[FiscalizationRequest]) - LEN('o:')
) as OperationID
FROM TB_Commander;
答案 2 :(得分:0)
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)