当前位置: 首页 > 面试题库 >

用户定义函数中的字母数字值增加

狄海
2023-03-14
问题内容

我正在尝试在SQL Server 2005下编码用户定义的函数,该函数会将字母数字值的整数部分加1。例如, uf_AlphanumericIncrease ('A000299')返回“ A000300”。到目前为止,这是我所做的;

ALTER FUNCTION uf_AlphaNumericIncrement
(
@ID varchar(10)
)
RETURNS VARCHAR(10) AS
BEGIN
    DECLARE @RES varchar(10);
    IF SUBSTRING(@ID,LEN(@ID),1)='9'
        SET @RES=SUBSTRING(@ID,1,LEN(@ID)-2)+CAST (CAST(SUBSTRING(@ID,LEN(@ID)-1,1) AS smallint)+1 AS VARCHAR(10))+'0';
    ELSE
        SET @RES=SUBSTRING(@ID,1,LEN(@ID)-1)+CAST (CAST(SUBSTRING(@ID,LEN(@ID),1) AS smallint)+1 AS VARCHAR(10));
    RETURN @RES;
END

但是如您所见,它仅适用于最后一位数字。我需要将其置于循环下,以便它可用于A002999等。有任何想法吗?

编辑:给定值的Alpha前缀可能超过一个字符,或者根本没有。


问题答案:

现在可以使用任何长度的前缀和数字部分(每个最多20个)

DECLARE @prefix varchar(20), @numberstr varchar(20), @number int, @Val varchar(40)

SELECT @Val = 'ABCD000006'
--SELECT @Val = 'A03'

SELECT @prefix = LEFT(@Val, PATINDEX ('%[0-9]%', @Val) -1)
SELECT @numberstr = SUBSTRING(@Val, PATINDEX ('%[0-9]%', @Val), 8000)
SELECT @number = CAST(@numberstr AS int) + 1
SELECT @prefix + RIGHT(REPLACE(SPACE(LEN(@numberstr)), ' ', '0') + CAST(@number AS varchar(20)), LEN(@numberstr))


 类似资料:
  • 我需要一个java方法,它接受一个整数,然后将其递增并为您提供相应的alpha字符。类似于这样: 因此,如果我传递value等于,那么它应该递增并返回字母。如果我传递它,那么它应该返回字母。如果我将数字传递给它,那么它应该返回。如果我将数字传递给它,那么它应该返回等等。 alpha几乎模拟了excel工作表列的表示方式,我需要做的就是通过传递一个数字从方法中获取alpha值。除了从返回的字符串之外

  • 问题内容: 改善这个问题 我是android编码练习的新手 假设这是我的第一个ID,我希望使用共享的首选项将此值自动递增1并用作员工ID。如ABB20180002,ABB20180003,ABB20180004等。 问题答案: 您不能直接增加字母数字值。如果要这样做,您需要为其编写一些代码行 这是 activity_main.xml 这是 MainActivity.java 希望这会帮助你。

  • 场景是——我读取文件的最后一行,将其递增一行,然后写回。 读写操作已完成。我发现很难增加alpha数值,因为它有一些条件。 条件包括: 它应该只有3个字符长 示例:A01、A02。。。。A99、B01、B02。。。。B99 一旦达到Z99,应为AA1、AA2、AA3。。。AA9 然后AB1,AB2,。。。AZ9 因此,基本上,当递增值时,不应变为AA10,即4个字符 我现在所做的是分离字母和整数,

  • 问题内容: 我想编写一个接受3个字符并将其递增的函数,并将新递增的字符作为字符串返回。 我知道如何将单个字母增加到下一个字母,但是我怎么知道何时增加第二个字母,然后停止然后再增加第一个字母以实现顺序增加? 因此,如果通过了AAA,则返回AAB。如果通过了AAZ,则返回ABA(硬部分)。 我希望您能提供有关逻辑的帮助以及使用哪些PHP函数的帮助。 更好的是,是否已经完成了此操作,或者有可用的类来执行

  • 我想将一个字母作为字符串传递给这个方法,它应该返回相应的数字(作为字符串),该数字存储在与letterDispari数组中相同的索引中,但存储在numberDispari数组中。我以为使用字符串会比创建一个巨大的switch语句更容易。但我不明白为什么这不是归还任何东西。

  • 问题内容: 基本上,我的情况要求我检查在一种情况下由用户从键盘输入定义的字符串是否仅为字母字符,而在另一种情况下仅为数字。这是用Java编写的。 我当前的代码: 我需要确保StudentID仅是数字,并且每个名称段都是字母。 问题答案: 已经可以使用方法检查下一个标记是否具有给定的模式/类型。 这是一个使用正则表达式用于验证下一个标记仅由字母组成的示例: 这是一个示例会话: 要验证下一个令牌是可以