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

发布于 2024-12-11 08:00:27 字数 229 浏览 0 评论 0原文

我遇到的情况是,我有一个列名 c_id,它位于 varchar 中,但包含整数或空值。 (我无法更改数据类型,因为在我的项目中很长一段时间以来它都是这样使用的)

我的问题是,每当我尝试使用该列按表进行排序时,它都会显示损坏的结果,甚至当我搜索最大值时value 它不会根据其大小给出最大值。

我想知道它内部是否以 ASCII 形式存储,但我不太确定。 请帮助我了解为什么会发生这种情况。

谢谢。

I have a situation in which I have a column name c_id which is in varchar but contains integer or null values.
(I cannot change the datatype since it is been used like this, from very long, in my project)

My problem is whenever I try to order by my table with that column, it shows me corrupted results and even when I search for the max value it doesn't give me the max value according to its magnitude.

I wonder if it is stored in ASCII form internally, but i m not very sure.
PLease help me knowing this why this is occurring.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦醒灬来后我 2024-12-18 08:00:27

尝试使用 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

Try to use CAST function:

SELECT CAST(c_id AS UNSIGNED INTEGER) id, field1, field2 
FROM your_table
ORDER BY id

or

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
胡渣熟男 2024-12-18 08:00:27

您可以使用 CAST 函数。下面是一些代码,向您展示一个示例以及它对返回结果的影响:

mysql> SELECT CAST('19.45' AS DECIMAL(5,2)) as result;

+--------+
| result |
+--------+
| 19.45 |
+--------+

1 row in set (0.04 sec)

You can use the CAST function. Here is some code to show you an example and the difference it makes in the results returned:

mysql> SELECT CAST('19.45' AS DECIMAL(5,2)) as result;

+--------+
| result |
+--------+
| 19.45 |
+--------+

1 row in set (0.04 sec)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文