1> 命名需要加 as 關鍵字;
2> 別名不能加mysql自動生成斜單引號,中文別明不能加單引號;
3> 當mysql某個字段的類型為 tinyint時,且長度為1,遷移到金倉時,自動轉換為 true 或 false;(需要講tinyint改為2,才可以保持一樣的數值,對應類型為Integer);
4> 計算時,需要將varchar類型轉換為Decimal類型,才可以與1.000000023去加減乘除;
例如: cast(IF(score,0) as DECIMAL) * 0.10000000000000016
5> 使用 left join 時進行關聯查詢,每個聯表后 用 on 連接 關聯條件;不允許聯表后用 on 關聯所有不同表的關聯條件;
6> 報錯信息:Cause: com.kingbase8.util.KSQLException: ERROR: CASE types TEXT and NUMERIC cannot be matched
CASE WHEN 'string' is NULL THEN '--' Else IF ( ROUND( 0.0003, 2 ) = 0, 0.01::varchar, ROUND( 0.0003, 2 ) ) END AS 'alias'
// 前后都為字符串,類型需要保持一致
7>,偽列 (rownum)
SELECT * FROM ( SELECT t1.*, rownum - 1 orderNum //rownum-1 從 0開始,rownum 從1開始 FROM ( SELECT r.uid nameId, r.uid uid, //這個地方不允許別名與原字段一樣 'company' AS LABEL // 常量命名需要加 AS 關鍵字 FROM risk_confilict_legal r LEFT JOIN company_graph_risk_analy p ON r.uid = p.pfr_id WHERE ( p.list_time BETWEEN '19901001' AND '20301031' OR list_time IS NULL ) ORDER BY IF ( LEFT ( r.valueone, 3 ) != LEFT ( r.valuetwo, 3 ), 0, 1 ) LIMIT 100000000 ) t1 ) result
8>,mysql :select 10 DIV 2;-》kingbase8:select 10 / 2;
9>,mysql:
UPDATE company_score cs, ( SELECT prvt_org_cde, IF ( ( 25+100 * score ) > 96, 96, ( 25+100 * score ) ) AS score FROM tencent_every_company_scores ) tencent SET cs.stmt_score = tencent.score WHERE tencent.prvt_org_cde = cs.company_name
Kingbase8:
UPDATE company_score cs SET cs.stmt_score = tencent.score FROM ( SELECT prvt_org_cde, IF ( ( 25+100 * (score::DECIMAL) ) > 96, 96, ( 25+100 * (score::DECIMAL) ) ) AS score FROM tencent_every_company_scores ) tencent WHERE tencent.prvt_org_cde = cs.company_name
或者:
UPDATE company_score cs
SET cs.stmt_score =(
SELECT IF((25 + 100 * (score::DECIMAL))> 96,96,(25 + 100 * (score::DECIMAL))) AS score
FROM tencent_every_company_scores
WHERE prvt_org_cde = cs.company_name
)
WHERE EXISTS(
SELECT 1 FROM tencent_every_company_scores
WHERE prvt_org_cde = cs.company_name)