我有一种情况,我有一个列名c_id,它在varchar中,但包含整数或空值。 (我无法更改数据类型,因为在我的项目中很长时间都使用了这个数据类型)
我的问题是,每当我尝试通过我的表格对该列进行排序时,它会向我显示已损坏的结果,即使我搜索最大值,也不会根据其大小给出最大值。
我想知道它是否在内部以ASCII格式存储,但我不太确定。 PLease帮助我知道这是为什么会发生这种情况。
感谢。
答案 0 :(得分:5)
尝试使用CAST功能:
SELECT CAST(c_id AS UNSIGNED INTEGER) id, field1, field2
FROM your_table
ORDER BY id
或
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
答案 1 :(得分:1)
您可以使用CAST功能。下面是一些代码,向您展示一个示例以及它在返回的结果中的区别:
mysql> SELECT CAST('19.45' AS DECIMAL(5,2)) as result;
+--------+
| result |
+--------+
| 19.45 |
+--------+
1 row in set (0.04 sec)