MYSQL排序数组

时间:2016-08-15 06:16:25

标签: mysql arrays

这是我的结果

+----------------------------------------------------------------------------------------------------------------------------------------------+
| SUBSTRING(COLUMN_TYPE,5)                                                                                                                     |
+----------------------------------------------------------------------------------------------------------------------------------------------+
| ('Sedan','Hatch','Convertable','Van','Coupe','Light Truck','People Mover','SUV','Ute','Wagon','Cab Chassis','Sample Body','Body 4','BOdy 5') |
+----------------------------------------------------------------------------------------------------------------------------------------------+

这是我的查询

SELECT SUBSTRING(COLUMN_TYPE,5) FROM information_schema.COLUMNS  WHERE TABLE_SCHEMA=DATABASE()  AND TABLE_NAME='Ad_tbl'  AND COLUMN_NAME='body_type'

我想要以其他方式对数组进行排序..所以Sedan将在数组的最后一个而不是第一个..已经尝试过ORC或ASC或者没有运气

1 个答案:

答案 0 :(得分:2)

您正在查询ENUM定义中的项目列表,并且您想要更改订单?如果不使用ALTER TABLE更改ENUM,则无法执行此操作。

ENUM中项目的顺序与值的物理存储有关。 'Sedan'为1,'Hatch'为2,'Convertable'(sic)为3等。更改这些字符串的顺序需要更改枚举值。

当然,您可以更改在应用程序代码中显示字符串的顺序。但这意味着解析出该列表中的项目,拆分逗号,删除引号和数据等。

但是在纯SQL中进行类似的文本解析会令人沮丧,或者至少会浪费很多时间。

ENUM定义中提取项目的这种尴尬是MySQL's ENUM data type is evil的原因之一。

如果要在不重新定义表格的情况下控制排序顺序, 你最好使用查找表而不是ENUM