mysql语句转oracleoracle语法转mysql(hql)之decode和casewhen转换函数oracle 语法转mysql(hql)之decode和case when 转换函数
decode 和 case when 转换函数
场景:经常需要oracle数据库和hive⼤数据平台或mysql数据库等切换,造成写代码经常要迁移,但是hive、mysql中没有decode,所以python写了⼀个转换case when 写法的函数
编码:
def decode_Case_when(str1):
#对字符串进⾏分列
t0 = str1.split(',')
#取出待映射的列表情况列+对应输出值列
t1 = t0[-(len(t0)-1):-1]
#取出映射列表中的key 取出所有情况列
t_key = [t1[i] for i in range(len(t1)) if i%2==0]
#取出待映射列表中的value  取出对应情况列输出列
t_value = [t1[i] for i in range(len(t1)) if i%2==1]
#取出待映射的列名取出判断条件列
t2 = str1.split(',')[0].split('(')[1]
#取出⽆法匹配时的默认值这个默认值列带“)”
t3 = t0[-1]
result = 'case '
for i in range(len(t_value)):
# 当判断条件的值为null时,拼接变量 is null
if t_key[i] =='null':
程序设计语言的功能包括
免费听书网站全免费
result = result + 'when '+str(t2)+' is '+t_key[i]+ ' then '+t_value[i]+' '
jsp注释的语法格式是什么else:
result = result + 'when ' + str(t2) + ' = ' + t_key[i] + ' then ' + t_value[i] + ' '
result = result +'end'
return result
样例
输⼊
if __name__ == '__main__':
print(decode_Case_when("decode(t1.LAT_DT,null,t2.LST_DT,T1.LST_DT"))
print(decode_Case_when("decode(ec.customer_or_client,1,'客户',2,'代理⼈',ec.customer_or_client)"))
输出
case when t1.LAT_DT is null then t2.LST_DT end
case when ec.customer_or_client = 1 then '客户' when ec.customer_or_client = 2 then '代理⼈' endgg免root框架修改器
>php面试题数据库优化方法

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。