Mysql 将字符串转换为ascii整数的sql创建函数
我想按问题编号对记录进行排序,例如:1、2c、10、12a。把它们转换成ascii码的和好吗?如果是,下面创建sql函数的代码中会出现什么错误?如果没有,那么最好的方法是什么Mysql 将字符串转换为ascii整数的sql创建函数,mysql,sorting,stored-procedures,Mysql,Sorting,Stored Procedures,我想按问题编号对记录进行排序,例如: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 @
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
我认为,你需要改变一些逻辑,比如
创建函数dbo.asciocodeinteger(@string作为VARCHAR(3))
返回整数
作为
开始
声明@result int;
声明@char(1);
声明@positionint;
设置@position=1;
设置@result=0;
而@position我认为,你需要改变一些逻辑,比如
声明@position=1
@Char=子字符串(@string,@position,1)
仅修改@position而不是@string
解决方案看起来像,(无法在SQL FIDLE上运行)
创建函数dbo.asciocodeinteger(@string作为VARCHAR(3))
返回整数
作为
开始
声明@result int;
声明@char(1);
声明@positionint;
设置@position=1;
设置@result=0;
虽然@position-oh谢谢,但由于某些原因,出现了语法错误#1064。是因为mysql服务器版本吗?我正在尝试MS SQL server,请检查我的SQL的编辑解决方案,只更改了Len(@string)哦,谢谢,但是由于某些原因,出现了语法错误#1064。是mysql服务器版本造成的吗?我正在尝试MS SQL server,请检查我的SQL的已编辑解决方案,只有Len(@string)中的更改请添加数据库类型。SQL小姐?MySQL?Sybase?根据回复中的注释重新标记为mysql
。请添加数据库类型。SQL小姐?MySQL?Sybase?根据对答案的评论,用mysql重新标记
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