收集两个单词之间的值-SQL

时间:2018-07-29 14:43:28

标签: sql sql-server substring charindex

我一直在努力收集两个特定单词之间的值。

我的一个工作正常,但另一个似乎抛出了一个我无法解决的错误...

字段值(NVARCHAR):

** Service Details **  Service Line: 0000000010  Service No: 000000000003001441  Service Text: SMPR Small meter problem  Service Qty: 55.06    ** Appointment Details **  17.07.2018 11:55 To 16.08.2018 11:55  

我正在使用的脚本:

REPLACE(SUBSTRING(SUBSTRING([description_long],CHARINDEX('Service No:',[description_long])-1,CHARINDEX('Service Text:',[description_long])-CHARINDEX('Service No:',[description_long])+0), 14, 100),char(13),'') AS [serviceNo] 
REPLACE(SUBSTRING(SUBSTRING([description_long],CHARINDEX('Service Text:',[description_long])-1,CHARINDEX('Service Qty:',[description_long])-CHARINDEX('Service Text:',[description_long])+0), 16, 2000),char(13),'') AS [serviceText]

因此,服务行给了我:0000000010,但服务文本给了我:

  

传递给LEFT或SUBSTRING函数的长度参数无效。

我尝试将“-”更改为“ +”

REPLACE(SUBSTRING(SUBSTRING([description_long],CHARINDEX('Service Text:',[description_long])-1,CHARINDEX('Service Qty:',[description_long])+CHARINDEX('Service Text:',[description_long])+0), 16, 2000),char(13),'') AS [serviceText]

哪个都没有错误和值:

 SMPR Small meter problem  Service Qty: 55.06    ** Appointment Details**  17.07.2018 11:55 To 16.08.2018 11:55

我在哪里错了? -任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:0)

像这样吗?

dat %>%
   group_by(IndID) %>%
   nest %>%
   mutate(data =  map(data,  ~ .x %>% 
                                mutate(Max = max(unlist(.), na.rm = TRUE)))) %>% 
   unnest