这是我的结果
+----------------------------------------------------------------------------------------------------------------------------------------------+
| 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或者没有运气
答案 0 :(得分:2)
您正在查询ENUM
定义中的项目列表,并且您想要更改订单?如果不使用ALTER TABLE
更改ENUM
,则无法执行此操作。
ENUM
中项目的顺序与值的物理存储有关。 'Sedan'为1,'Hatch'为2,'Convertable'(sic)为3等。更改这些字符串的顺序需要更改枚举值。
当然,您可以更改在应用程序代码中显示字符串的顺序。但这意味着解析出该列表中的项目,拆分逗号,删除引号和数据等。
但是在纯SQL中进行类似的文本解析会令人沮丧,或者至少会浪费很多时间。
在ENUM
定义中提取项目的这种尴尬是MySQL's ENUM data type is evil的原因之一。
如果要在不重新定义表格的情况下控制排序顺序,
你最好使用查找表而不是ENUM
。