【发布时间】:2019-08-28 17:14:10
【问题描述】:
我有两列,PO_NUMBER 和 PO_COUNTER。 PO_NUMBER 列有许多采购订单号。例如,601A-00001、601A-00002、601A-00003....601A-00101。我需要PO_COUNTER 列来计算每个项目中的采购订单数量。项目编号是“-”左侧的数字,当它们是 PO_NUMBER 中的不同项目编号时,计数应从 1 开始。下面粘贴的屏幕截图是最终结果集的外观......
我尝试过使用 SUBSTRING 和 CHARINDEX.....
select PO_number, RIGHT(PO_number, CHARINDEX('0', REVERSE(PO_Number))-1)
from Purchase_Order
order by PO_NUMBER
但是当 PO_NUMBER 602A-00105 和 601A-00101 如上所示时,我的代码返回 5 和 1,因为它们是最后一次出现 0 之后的数字。
我也试过了……
select PO_number, SUBSTRING(po_number, CHARINDEX('-', po_number) + 1, LEN(po_number) - CHARINDEX('-', po_number)) domain
from Purchase_Order
order by PO_NUMBER
但这会返回“-”之后的所有内容,我不希望这样。
【问题讨论】:
-
使用第二个选项并修剪零,如stackoverflow.com/a/662437/3770885
-
寻找连字符而不是零。照原样,您可以去掉最后五个字符。
-
不是你想要'-'之前的所有东西吗?如果是,为什么你不能修改你的第二个脚本来获取它?
标签: sql sql-server