报错描述
--使用oracl的sql查询时候,此sql无误:
SELECT DISTINCT MS_BRDA.MZHM as patientId,
MS_BRDA.BRXM as name,
CASE
WHEN MS_BRDA.BRXB = 1 THEN '男'
WHEN MS_BRDA.BRXB = 2 THEN '女'
ELSE '未知'
END AS gender,
MS_GHMX.GHSJ as arrivalTime,
MS_BRDA.CSNY as birthday,
MS_BRDA.HKDZ as address,
MS_GHMX.KSDM as deptCode
FROM MS_BRDA@PORTAL56_HIS
LEFT JOIN MS_GHMX@PORTAL56_HIS ON MS_GHMX.BRID = MS_BRDA.BRID
--但是关联其他表就会报错(ORA-29275: 部分多字节字符):
SELECT DISTINCT MS_BRDA.MZHM as patientId,
MS_BRDA.BRXM as name,
CASE
WHEN MS_BRDA.BRXB = 1 THEN '男'
WHEN MS_BRDA.BRXB = 2 THEN '女'
ELSE '未知'
END AS gender,
MS_GHMX.GHSJ as arrivalTime,
MS_BRDA.CSNY as birthday,
MS_BRDA.HKDZ as address,
MS_GHMX.KSDM as deptCode
FROM MS_BRDA@PORTAL56_HIS
LEFT JOIN MS_GHMX@PORTAL56_HIS ON MS_GHMX.BRID = MS_BRDA.BRID
LEFT JOIN ECIS_YJFZ ON MS_BRDA.BRID = ECIS_YJFZ.BRID
排查思路
定位问题为字符格式不一致导致
SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET';
--his是ZHS16GBK
--ecis是AL32UTF8