如何使用mysql对基于整数的varchar id进行排序

时间:2015-11-24 06:00:49

标签: php mysql sql-order-by

我的系统中的Testcase_id是varchar并由触发器生成,我想根据varchar id的整数值对它们进行排序。到目前为止,我已经使用了三个查询但根本没有工作。我也尝试过将字符串转换为整数的函数。在这里我也提到了这个函数以及我在这个查询中的查询我还没有使用过函数。

select t.Testcase_id, 
       CONVERT(SUBSTRING_INDEX('t.Testcase_id','_',2),UNSIGNED INTEGER) as num 
from testcase_master t 
order by num

输出(查询):

Query result set

2 个答案:

答案 0 :(得分:1)

您必须在-1内使用2代替SUBSTRING_INDEX

select t.Testcase_id,      
       CONVERT(SUBSTRING_INDEX(t.Testcase_id,'_', -1),UNSIGNED INTEGER) as num 
from testcase_master t 
order by num

根据manual

  

在计数出现之前,从字符串str 返回子字符串   分隔符delim。如果count是正面,那么左侧的所有内容   返回最终分隔符(从左侧计算)。如果算数是   否定,最终分隔符 right 的所有内容(计数   从)返回。

Demo here

答案 1 :(得分:0)

使用Cast

mongodb

CAST(col AS UNSIGNED) REPLACE

CAST

您的查询: -

CAST(REPLACE(testcase_id,'TC_CTU_','') AS UNSIGNED)