Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 存储在varchar字段中的整数值在排序时给出不同的结果_Mysql_Select_Sql Order By_Ascii_Max - Fatal编程技术网

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

Mysql 存储在varchar字段中的整数值在排序时给出不同的结果,mysql,select,sql-order-by,ascii,max,Mysql,Select,Sql Order By,Ascii,Max,在这种情况下,我有一个列名称c_id,它位于varchar中,但包含整数值或空值。 (我无法更改数据类型,因为在我的项目中,从很长一段时间以来,它一直是这样使用的) 我的问题是,每当我试图用该列按表排序时,它都会显示已损坏的结果,甚至当我搜索最大值时,它也不会根据其大小给我最大值 我想知道它是否在内部以ASCII格式存储,但我不是很确定。 请帮助我了解发生这种情况的原因 谢谢。尝试使用以下功能: SELECT CAST(c_id AS UNSIGNED INTEGER) id, field1,

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

我的问题是,每当我试图用该列按表排序时,它都会显示已损坏的结果,甚至当我搜索最大值时,它也不会根据其大小给我最大值

我想知道它是否在内部以ASCII格式存储,但我不是很确定。 请帮助我了解发生这种情况的原因

谢谢。

尝试使用以下功能:

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

尝试使用以下功能:

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


您可以使用CAST函数。下面是一些代码,向您展示了一个示例及其在返回的结果中所起的作用:

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

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

1 row in set (0.04 sec)

您可以使用CAST函数。下面是一些代码,向您展示了一个示例及其在返回的结果中所起的作用:

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

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

1 row in set (0.04 sec)

Marco,
结束案例
在存储过程中使用,而不是在查询中使用,在查询中它只是以no
结束
我知道用谷歌搜索mysql案例的正确页面几乎是不可能的,但这是标准SQL,如果你用谷歌搜索案例ANSI SQL,你应该得到正确的信息。@Johan:你刚才解释了我的错误,并且已经编辑了我的代码。。。我应该告诉你什么?非常感谢,真的!!!:)我会使用
NULL
作为
NULL
:)@SalmanA:我不知道用户想要做什么(首先,使用VARCHAR作为ID是一个大问题);你的建议可能是正确的。。。如果OP说他需要id为空,我会尽快编辑我的帖子。谢谢Marco,
结束案例
在存储过程中使用,而不是在查询中使用,在查询中它只是以no
结束
我知道用谷歌搜索mysql案例的正确页面几乎是不可能的,但这是标准SQL,如果你用谷歌搜索案例ANSI SQL,你应该得到正确的信息。@Johan:你刚才解释了我的错误,并且已经编辑了我的代码。。。我应该告诉你什么?非常感谢,真的!!!:)我会使用
NULL
作为
NULL
:)@SalmanA:我不知道用户想要做什么(首先,使用VARCHAR作为ID是一个大问题);你的建议可能是正确的。。。如果OP说他需要id为空,我会尽快编辑我的帖子。谢谢仍然,是否将列更改为整数数据类型?仍然,是否将列更改为整数数据类型?