mysql - sql创建函数将字符串转换为ascii整数

标签 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 @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

最佳答案

我认为,您需要更改一些逻辑,例如,

  1. 声明@position=1
  2. @Char =SUBSTRING(@string, @position, 1)
  3. 只修改@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/

相关文章:

c++ - 在 C++ 中排序时得到错误的输出

sorting - Elasticsearch:如何获取按匹配分数排序的字段的最高唯一值?

sql - 如何将这个大查询变成存储过程

java - MyBatis注解调用Stored Procedure并获取Out Params

php - 使用 mysqli 将印地语数据插入数据库

mysql - 使用现有连接连接到 mysql 数据库

java - 排序后获取未排序 double 组的索引

mysql 过程不返回任何行

php - 同时使用 PDO 和 mysqli - 有碰撞风险吗?

MySQL存储过程更新表和删除相关