clarkk Asked: 2017-03-23 06:44:24 +0800 CST2017-03-23 06:44:24 +0800 CST 2017-03-23 06:44:24 +0800 CST 如何将值转换为布尔值 772 我需要按字段的值排序查询。是否为空 我需要将列的值order_by转换为布尔值,列类型是 varchar 所有order_by为空或 null 的行都应在查询中最后排序 SELECT * FROM table ORDER BY CAST(order_by, 'boolean') mysql order-by 2 个回答 Voted Best Answer RolandoMySQLDBA 2017-03-23T06:53:48+08:002017-03-23T06:53:48+08:00 这是使用IFNULL()函数的简洁方法 SELECT * FROM TABLE ORDER BY IFNULL(order_by,'')=''; 或添加IF()函数 SELECT * FROM TABLE ORDER BY IF(IFNULL(order_by,'')='',1,0); 更新 2017-03-22 14:43 EDT ypercubeᵀᴹ还有一个建议: SELECT * FROM TABLE ORDER BY (order_by > '') DESC; Rick James 2017-03-23T14:09:37+08:002017-03-23T14:09:37+08:00 更短: ORDER BY order_by DESC 因为NULL< ''< 其他任何东西(我认为)。 这可能有一个优点, INDEX(order_by) (或一些以 )结尾的复合索引order_by可以使用。
这是使用IFNULL()函数的简洁方法
或添加IF()函数
更新 2017-03-22 14:43 EDT
ypercubeᵀᴹ还有一个建议:
更短:
因为
NULL
<''
< 其他任何东西(我认为)。这可能有一个优点,
(或一些以 )结尾的复合索引
order_by
可以使用。