繁体   English   中英

获取VarChar列的最大+1

[英]Get Max +1 of VarChar Column

我有一个表,该表在名为EMPLOYEE_CODE的varchar列中包含文本和数字。 我想忽略所有文本,并在“列”中获取最高编号,然后再加上+ 1,然后我可以将其分配给新员工。 下面的代码将在INT列上工作,但在VARCHAR上将不工作,因为文本我得到以下错误:

将varchar值“ testusercode”转换为数据类型int时,转换失败。

SELECT MAX(EMPLOYEE_CODE) + 1 as Target
FROM [COMPANY].[dbo].[USER]
WHERE EMPLOYEE_CODE + 1 NOT IN (SELECT EMPLOYEE_CODE From dbo.USER)

我猜我必须将转换或强制转换添加到查询中,但不确定如何

您可以使用ISNUMERIC来检查数字,获取最大值并加1。

SELECT MAX(EMPLOYEE_CODE) + 1 as Target
FROM [COMPANY].[dbo].[USER]
WHERE  ISNUMERIC(EMPLOYEE_CODE) = 1

如果使用的是SQL Server的较新版本,则也可以使用

SELECT MAX(EMPLOYEE_CODE) + 1 as Target 
FROM [COMPANY].[dbo].[USER] WHERE TRY_PARSE(EMPLOYEE_CODE AS int) IS NOT NULL

同样的东西也有TRY_CAST和TRY_CONVERT。 您可以轻松地检查哪一个适合您的目的。

https://docs.microsoft.com/zh-cn/sql/t-sql/functions/try-cast-transact-sql

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM