我正在尝试从这个字段中获取下一个值 SU - 1 /2016
我使用的查询语句
SELECT RIGHT('000' + CAST(ISNULL(MAX(SUBSTRING(InvoiceNO,4, 1)), 0) + 1 AS VARCHAR(4)), 4)
from [dbo].[Invoice]
查询输出为
0001
,应该是0002
。我正在尝试从这个字段中获取下一个值 SU - 1 /2016
我使用的查询语句
SELECT RIGHT('000' + CAST(ISNULL(MAX(SUBSTRING(InvoiceNO,4, 1)), 0) + 1 AS VARCHAR(4)), 4)
from [dbo].[Invoice]
0001
,应该是0002
。您需要从第4个位置开始截取值SU - 1 /2016
,得到"-"。所以要获取1,您需要从第6个位置开始,这将给您期望的输出。
SELECT
RIGHT('000' + CAST(ISNULL(MAX(SUBSTRING(InvoiceNO,6, 1)), 0) + 1 AS VARCHAR(4)), 4)
from [dbo].[Invoice]
SU - 1 /2016
上的substring
函数。你从第4个位置开始取一个长度为1的子字符串(请记住,substring
是基于1而不是0的)。所以你得到了-
。如果你尝试:SELECT '-' + 1
1
。
你可能需要从位置6开始进行“子字符串”操作。SELECT RIGHT('000' + CAST((ISNULL(MAX(SUBSTRING(exampleColumn,6, 1)), 0) + 1) AS VARCHAR(4)), 4)
from [dbo].tblExample
您可以让脚本变得更短,并使用以下内容:
SELECT RIGHT(MAX(SUBSTRING(InvoiceNO,6, 1)) + 10001, 4)
-- Including this for test:
FROM (values('SU - 1 /2016')) x(InvoiceNO)