用字符分割字符串

split string with character

使用 SQL 2008 年;我有以下字符串:

EMCo: 1 WorkOrder: 12770      WOItem: 10

我正在尝试获取工单#。

当字符串末尾没有 WOItem 时,我可以使用以下语句获取 WorkOrder #。

[WorkOrder] = LTRIM(RTRIM(RIGHT(HQMA.KeyString,CHARINDEX(':',REVERSE(HQMA.KeyString))-1)))

此语句移动并且 Co# 可能有两位数,并且它并不总是有 WOItem #。希望找到可以在“:”之后拆分的东西,然后只拿第二组。

有什么建议吗?

使用 patindex() 怎么样?假设工单总是有五个字符:

select substring(HQMA.KeyString,
                 patindex('%WorkOrder: %', HQMA.KeyString) + 11,
                 5) as WorkOrder

上面的 patindex 建议会很好地工作,现在如果你仍然想使用你当前的语句,substring 将提取相同的值,replace 将取出 WOItem。不是很优雅,不管你有没有WOItem都可以:

select substring(LTRIM(RTRIM(RIGHT(REPLACE(HQMA.KeyString,'WOItem:',''),
CHARINDEX(':',REVERSE(REPLACE(HQMA.KeyString,'WOItem:','')))-1))),0,7)


select substring(LTRIM(RTRIM(RIGHT(REPLACE(HQMA.KeyString,'WOItem:',''),
CHARINDEX(':',REVERSE(REPLACE(HQMA.KeyString,'WOItem:','')))-1))),0,7)