用字符分割字符串
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)
使用 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)