2

我不得不问你一些与 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

对不起我的英语不好...

谢谢你的手...

4

3 回答 3

1

尝试这个 ;)

select
substring(command, 
    patindex('%o:%', command) - 2, 
    patindex('%, c%', command)) as OperationID 
from TB_Commander 
where IdRow = 921321
于 2014-08-08T09:40:23.810 回答
0

此解决方案仅返回您需要的数据,同时考虑到您用于提取所需数据的模式长度:

SELECT
    SUBSTRING(command, 
    PATINDEX('%o:%', command) + LEN('o:'), 
    PATINDEX('%, c%', [FiscalizationRequest]) - PATINDEX('%o:%',[FiscalizationRequest]) - LEN('o:')
    ) as OperationID 
FROM TB_Commander;
于 2016-11-15T07:23:43.820 回答
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)
于 2019-03-14T14:46:47.917 回答