我有一種情況,其中列名c_id在varchar中,但包含整數或空值。 (我不能改變數據類型,因爲它在這個項目中使用很長,在很長的時間內,在我的項目中)存儲在varchar字段中的整數值在訂購時給出了不同的結果
我的問題是每當我嘗試按該表的順序排列時,它就會顯示我損壞的結果,我搜索最大值,它不會根據其大小給我最大值。
我不知道它是否以ASCII形式存儲在內部,但我不是很確定。 請幫助我知道這是爲什麼發生。
謝謝。
我有一種情況,其中列名c_id在varchar中,但包含整數或空值。 (我不能改變數據類型,因爲它在這個項目中使用很長,在很長的時間內,在我的項目中)存儲在varchar字段中的整數值在訂購時給出了不同的結果
我的問題是每當我嘗試按該表的順序排列時,它就會顯示我損壞的結果,我搜索最大值,它不會根據其大小給我最大值。
我不知道它是否以ASCII形式存儲在內部,但我不是很確定。 請幫助我知道這是爲什麼發生。
謝謝。
嘗試使用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
您可以使用CAST功能。下面是一些代碼,向您展示一個示例以及它在返回結果中的差異:
mysql> SELECT CAST('19.45' AS DECIMAL(5,2)) as result;
+--------+
| result |
+--------+
| 19.45 |
+--------+
1 row in set (0.04 sec)
不過,您是否希望將列更改爲整數數據類型? –