金倉數據庫KingBase8遷移SQL問題匯總


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)

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM