目前要把网站整体业务迁移到云,并且又现在的甲骨文转换成mysql数据库,实现去埃克斯波特学院,现在有个任务是把oracle的一个视图在mysql中创建上,相关的基表已经创建完毕,想当然觉得只要把甲骨文的创建语句有拿出来,在mysql执行就可以了,其实真正过程遇到了很多问题,具体如下:
1,mysql没有甲骨文的解码函数,
2,mysql t没有甲骨文的翻译函数,
3,mysql创建视图不能有子查询(视图第1349号错误解决方法)错误1349 (HY000):视图的选择包含子查询的FROM子句
我的解决办法是视图中包含视图
4,mysql CONCAT_WS和CONCAT的区别
创建或替换infoservice视图。mail_tasks作为
选择一个。中期member_id, a。dingyue_id dingyue_id, a。cust_email cust_email, duration_days,
memberinfo。cust_right_group使有效,
”{member_name”:“| | (memberinfo.CUST_NAME”,“翻译””、“__”)| |’”,“关键词”:“| |
翻译(a.keyword,“””、“__”) | |’”,“table_name2”:“‘| | a.topicid | |’”,
“area_id”:“| | a.areaid | |’”,“category_id添加”:“| |。industryid | |“}”查询
从
(
选择t。record_id dingyue_id, t。member_id为中期,t。cust_email cust_email,
t。duration_days duration_days, t。关键字,关键字,t.table_name,
t.industryid,
t.areaid,
解码(t。”、“topicid,解码(t.table_name zbxx,”, a, b, c, d, e, f, g, h,’,‘xmxx’,, i, j, k), t.topicid topicid)
从infoservice。t_member_my t, infoservice。t_member_my_info我
i.my_id=' 1 '
我和t.member_id=ember_id和t。符号=0
和长度(t.cust_email)比;3
)
infoservice。t_member_info memberinfo
a.mid=memberinfo的地方。record_id memberinfo。cust_right_group !=' 0 '和memberinfo.cust_status=罢健?
针对遇到的问题,来作出相应的调整:
甲骨文中的解码函数的用处:
解码(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)
该函数的含义如下:
如果条件=值1
返回(翻译值1)
ELSIF条件=值2
返回(翻译值2)
……
ELSIF条件=值n
返回(翻译值n)
其他的
返回(缺省值)
如果
解码(字段或字段的运算,值1,值2,值3)
这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3
当然值1,值2,值3也可以是表达式,这个函数使得某些sql语句简单了许多。
用情况来替换:
把解码(t。”、“topicid,解码(t.table_name zbxx,”, a, b, c, d, e, f, g, h,’,‘xmxx’,, i, j, k), t.topicid topicid)
替换成
当t。topicid=', '然后(当t。table_name=' zbxx“然后”,a, b, c, d, e, f, g, h,“当t。table_name=' xmxx '然后',i, j, k)其他t。作为topicid topicid结束
首先甲骨文的翻译函数的作用:
翻译(字符串、from_str to_str)
返回将(所有出现的)from_str中的每个字符替换为to_str中的相应字符以后的string.TRANSLATE是替换所提供的功能的一个超集。如果from_str比to_str长,那么在from_str中而不在to_str中的额外字符将从字符串中被删除,因为它们没有相应的替换字符.to_str不能为空.Oracle将空字符串解释为NULL,并且如果中翻译的任何参数为零,那么结果也是NULL。
:一定注意甲骨文的翻译的函数是一一对应的替换,并且它针对的是单个字符,而且是把from_str里面出现的字符全部都对应着换掉(要么换成to_str中对应的字符,要没有对应的就直接去掉),要区别于替换,替换针对的是字符串,必须要全部对应上,才能整体把from_str替换成to_str。 ,从语法:翻译(expr) expr:代表一串字符,从与是从左到右一一对应的关系,如果不能对应,则视为空值。 举例: 完成;选择翻译(“abcbbaadef”、“ba”、“# @”)从双;(b将被#替代,将被@替代)
:一定注意甲骨文的翻译的函数是一一对应的替换,并且它针对的是单个字符,而且是把from_str里面出现的字符全部都对应着换掉(要么换成to_str中对应的字符,要没有对应的就直接去掉),要区别于替换,替换针对的是字符串,必须要全部对应上,才能整体把from_str替换成to_str。 ,从语法:翻译(expr) expr:代表一串字符,从与是从左到右一一对应的关系,如果不能对应,则视为空值。 举例: 完成;选择翻译(“abcbbaadef”、“ba”、“# @”)从双;(b将被#替代,将被@替代)