Teiid sql查询与中文字符

时间:2014-05-14 07:05:15

标签: php mysql sql teiid

我想问一个关于名为 teiid 的数据虚拟化系统的问题, 当我创建这样的查询时:

SELECT teiid2602.KC.{**some chinese character**}
FROM teiid2602.KC 
WHERE teiid2602.KC.id is not null;

teiid系统返回消息:

odbc_exec(): SQL error: [unixODBC]ERROR: TEIID30504 KK: 1054 TEIID11008:TEIID11004 Error executing statement(s): [Prepared Values: [] SQL: SELECT g_0.`mobile`, g_0.`{**some chinese character**}` FROM `teiid2602`.`KC` AS g_0]
org.teiid.jdbc.TeiidSQLException: TEIID30504 KK: 1054 TEIID11008:TEIID11004 Error executing statement(s): [Prepared Values: [] SQL: SELECT g_0.`mobile`, g_0.`{**some chinese character**}` FROM `teiid2602`.`KC` AS g_0];
Error while executing the query, SQL state S0022 in SQLExecDirect

但是我可以在我的MySQL工作台上运行这个查询,所以我想知道Teiid是否支持中文字符查询,或者是否有人遇到类似问题并且知道如何修复它。

1 个答案:

答案 0 :(得分:0)

Teiid SQL解析器将以下字符视为字母:拉丁字母a-z和A-Z,以及\ u0153- \ ufffd的unicode范围。无论如何,如果Teiid生成包含中文名称的最终输出SQL查询,它肯定支持您用于字段名称的特定字母。 所以问题可能是关于mysql本身或关于生成的输出查询(在你提供的原始查询中,当生成的查询包含它时,没有对'mobile'字段的引用)。

无论如何,找出问题的最佳方法是从日志中复制生成的查询并尝试直接在MySQL上执行。