为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
1 DM Database Server 64 V8
2 DB Version: 0x7000c
3 03134284094-20231020-205795-20067
【操作系统】:centos7
【CPU】: x86
【问题描述】*:
select的字段中含有条件表达式,如
select id, 1>2 from t1;
select id, (col1>>7)&7 in (1,2) as c1 from t1;
会报错
第 1 行, 第 xx 列[as]附近出现错误[-2007]:
语法分析出错.
这是不符合标准的sql语法? 还是达梦不支持, 或其他什么原因呢? 谢谢
在DM中,SQL查询的语法与MySQL有所不同。以下是您给出的MySQL查询以及它们对应的DM版本:
MySQL:
SELECT id, 1>2 FROM t1; SELECT id, (col1 >> 7) & 7 IN (1, 2) AS c1 FROM t1;
DM:
-- DM没有直接的“1>2”这样的常量表达式,我们可以用CASE WHEN ... THEN ... ELSE ... END来替代 SELECT id, CASE WHEN 1>2 THEN 1 ELSE 0 END FROM t1; SELECT id, CASE WHEN (col1 >> 7) & 7 = 1 THEN 1 WHEN (col1 >> 7) & 7 = 2 THEN 1 ELSE 0 END AS c1 FROM t1;