人大金仓kingbase数据迁移及使用问题 |
您所在的位置:网站首页 › linux连接人大金仓数据库 › 人大金仓kingbase数据迁移及使用问题 |
kingbase(单引号空值)判断失效
字符串判空问题,金仓直接把空字符串当成null,这样在sql里使用 a = ''判断空就会有问题,需要改一下数据库data目录下的kingbase.conf文件;添加 参数ora_input_emptystr_isnull=off 重启数据库 生效 ora_input_emptystr_isnull=off 复制代码 无效的编码序列UTF8kingbase.conf增加 ignore_char_null_check=true 处理完成后注释掉 ignore_char_null_check=true 复制代码 MySql数据迁移到金仓后MYSQL 中 field() 函数,可以用来对SQL中查询结果集进行指定顺序排序,不在其中的放在最前面。 KINGBASE 中可用函数 decode() 来满足指定顺序排序 。 -- MYSQL SELECT t.kid, t.audit_state FROM t_dx_capital_allocated t WHERE t.YEAR = '2020' AND t.del_flag = 1 ORDER BY FIELD( t.audit_state,-2,-3 ) DESC, t.update_time DESC LIMIT 20 -- KINGBASE SELECT t.kid, t.audit_state FROM t_dx_capital_allocated t WHERE t.YEAR = '2020' AND t.del_flag = 1 ORDER BY decode( t.audit_state, -3,1,-2, 2 ), t.update_time DESC LIMIT 20 复制代码MYSQL中GROUP_CONCAT()函数可以拼接字段为字符串。 KINGBSE中可以用String_agg()替换。 SELECT GROUP_CONCAT('%', t.id separator ';') FROM `score` t; SELECT String_agg(CONCAT('%',C1), ';' ) FROM TABLE_NAME; 复制代码if()函数可用case when来代替: COUNT( CASE WHEN t1.level = 'grade-001' THEN 1 ELSE NULL END ) AS sbjNum, COUNT( CASE WHEN t1.level = 'grade-002' THEN 1 ELSE NULL END ) AS dsjNum, COUNT( CASE WHEN t1.level = 'grade-003' THEN 1 ELSE NULL END ) AS xcjNum, COUNT( CASE WHEN t1.level = 'grade-004' THEN 1 ELSE NULL END ) AS qtNum 复制代码IFNULL函数没有,需要替换为NVL() FIELD函数没有,需要替换为DECODE() FIELD(t.audit_state,-2,-3) DESC,t.update_time DESC decode( t.audit_state, -3,1,-2, 2 ),t.update_time DESC 复制代码group by中没有的字段需要转换: SUBSTRING_INDEX(group_concat(lll.adminAreaId), ',', 1) AS adminAreaId, 复制代码转成大写: CAST(SUBSTRING_INDEX(group_concat(lll.totalInvestAmount), ',', 1) AS NUMBER(15,2)) AS totalInvestAmount 复制代码日期格式: to_char(CAST(TBDateTime AS TIMESTAMP), 'yyyy-mm') >= '2020-01' 复制代码varchar转int(字符串转数值) to_number(attendEntNumberCloud) 复制代码 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |