1
ayumilove 2017-08-11 11:25:20 +08:00
把公元前 替换成 负数
|
2
Alexisused 2017-08-11 11:34:24 +08:00
1 楼说的对
|
3
860670496 OP @ayumilove #1 这个办法也想过,然后用+0 之类的办法就可以
我更想知道的是 MySQL 支不支持 ORDER BY 一定的通用规则,直接能做到这种排列呢? |
4
xshwy 2017-08-11 11:48:35 +08:00 via iPhone
SELECT * FROM `SCHEDULE`
WHERE RATE IS NOT NULL AND RATE!='' ORDER BY SCHEDULE_DATE , FIELD(START_TIME,'8:00','18:30','21:00','21:30') |
5
LeeSeoung 2017-08-11 11:52:12 +08:00
order by 转化(字段) 转化就是你把 varchar 的公元信息转成数字一类的。。
|
6
860670496 OP @xshwy #4 field 的写法我查过,如果没写进去的字符串,会自动当作 0 来排序……
使用函数 FIELD(str,str1,str2,str3,...) MySQL 的自定义排序,str 与 str1、str2、str3...进行比较,并按照 str1,str2,str3...的顺序输出,如果遇到 str 为 null 或者不存在 str1,str2,str3...中的情况的则序列为 0 我总不能把公元前的所有字符串都写一遍吧? @LeeSeoung #5 这个我以前就用过,问题是 CAST 或者 CONVERT 没办法处理“前 32 ”这种情况啊 本来还思考过加一个 ID 字段来排序,后来一想这个表以后说不定还要在中间年份插入记录,肯定不会只往后加……现在暂时就采取 1 楼的办法 update 一下吧,多谢各位 |
7
LeeSeoung 2017-08-11 14:09:34 +08:00
平时用的 oracle 有 regexp_replace 这样的函数,查了下 mysql 并没有,可以利用下面的语句实现类似的功能吧
IF(url REGEXP 'test.yahoo.com.cn',REPLACE(url,'www1.sohu.com','www.sina.com'),REPLACE(url,'www2.yahoo.com','www.sina.com')) |
8
finull 2017-08-11 21:17:30 +08:00
ORDER BY ( CASE WHEN date LIKE '前%' THEN 0 - SUBSTRING(date, 2) ELSE date END )
可能有类型转化问题,试试 |