我想按问题编号对记录进行排序,例如:1、2c、10、12a。把它们转换成ascii码的和好不好?如果是,下面创建sql函数的代码会出现什么错误?如果不是,那么更好的方法是什么。
CREATE FUNCTION dbo.asciiCodeInteger (@string AS VARCHAR(3))
RETURNS int
AS
BEGIN
DECLARE @result int;
DECLARE @char CHAR(1);
SET @result = 0;
WHILE LEN(@string) > 0
BEGIN
SET @char = LEFT(@string, 1);
SET @result = @result + ASCII(@char);
SET @string = SUBSTRING(@string, 2, LEN(@string));
END
RETURN (@result);
END
最佳答案
我认为,您需要更改一些逻辑,例如,
- 声明@position=1
- @Char =SUBSTRING(@string, @position, 1)
- 只修改@position 而不是@string。
解决方案看起来像,(无法在 SQL Fiddle 上运行)
CREATE FUNCTION dbo.asciiCodeInteger (@string AS VARCHAR(3))
RETURNS int
AS
BEGIN
DECLARE @result int;
DECLARE @char CHAR(1);
DECLARE @position int;
SET @position = 1;
SET @result = 0;
WHILE @position <= LEN(@string)
BEGIN
SET @char = SUBSTRING(@string, @position, 1);
SET @result = @result + ASCII(@char);
SET @position = @position + 1
END
RETURN (@result);
END
关于mysql - sql创建函数将字符串转换为ascii整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32002365/