sqlserver-只在sqlMax+1中插入数字(禁止使用字符)



我使用的是这个代码

(SELECT (MAX(CODE)   +1  WHERE ISNUMERIC([code]) = 1)

我想最大值+1只我的列的数字阻止字符字符。

注意:当这个答案发布时,这个问题被标记为MYSQL。

您可以使用substring_index()来拆分值,然后重新合并它们:

(SELECT CONCAT(SUBSTRING_INDEX(MAX(Code), '-', 1), '-',
               SUBSTRING_INDEX(MAX(CODE), '-', -1) + 1
              ) 
 FROM . . .
 WHERE code LIKE '%NEW-1%'
)

这假设通配符中没有连字符,并且"1"之后的值都是数字。

此外,这不会填充数字为零,但这对此类代码来说是个好主意——它可以确保它们的长度始终相同,并且排序正确。

MAX()函数接受表达式,而不仅仅是列名:

SELECT MAX(CASE ISNUMERIC(code) WHEN 1 THEN code END)+1 as next_code
FROM (
    SELECT '15' AS code
    UNION ALL SELECT ' 98 ' AS code
    UNION ALL SELECT 'New-45' AS code
) foo
WHERE ISNUMERIC(code)=1;
16

(链接到SQL Server 2005,SQL Server 2000的文档显然不再在线,但MAX()无论如何都属于SQL标准。)

最新更新