实习期间遇到oracle转换SQL的情况。

oracle decode转换

例如orcale的这样的一个sql句子:

select * from (表) where id in('4538862','4588585','4883586','4883582','4993555','4993421','4993464')
    order by decode(id  ,'4538862','0','4883585','1','4883586','2','4883582','3','4993555','4','4993421','5','4993464','6');

而mysql沒有decode这样的函数,则转为mysql的一样的语句,可以如下:

select * from (表) where id in('4538862','4588585','4883586','4883582','4993555','4993421','4993464')
    order by field(id ,'4538862','4588585','4883586','4883582','4993555','4993421','4993464');

所以mysql有field()函数自定义排序,格式为field(value,str1,str2,str3,str4)。

substr

oracle里面的substr和mysql不一样,oracle的是零开始算第一个,而mysql是1。
SUBSTR(str,pos,len);从pos开始的位置,截取len个字符(空白也算字符)