存储在varchar字段中的整数值在排序时给出不同的结果

Sas*_*ant 1 mysql select ascii max sql-order-by

我有一种情况,我有一个列名称c_id,它在varchar中,但包含整数或空值.(我无法更改数据类型,因为它已经像这样使用了很长时间,在我的项目中)

我的问题是,每当我尝试按照我的表格对该列进行排序时,它会向我显示损坏的结果,即使我搜索最大值,也不会根据其大小给出最大值.

我想知道它是否在内部以ASCII格式存储,但我不太确定.请告诉我这是为什么会发生这种情况.

谢谢.

Mar*_*rco 5

尝试使用CAST功能:

SELECT CAST(c_id AS UNSIGNED INTEGER) id, field1, field2 
FROM your_table
ORDER BY id
Run Code Online (Sandbox Code Playgroud)

要么

SELECT 
    CASE 
        WHEN c_id IS NULL THEN 0;
        ELSE CAST(c_id AS UNSIGNED INTEGER);
    END AS id
    , field1, field2 
FROM your_table
ORDER BY id
Run Code Online (Sandbox Code Playgroud)