...
2、数据集中原生SQL查询带斜杠\的语句 ,预览会报表达式解析错误
解决方案
此问题是由于SQL中存在特殊符号,需要转义成ASCII码才能使用,此处以上述截图报错的oracle为例,示例为:3、Smartbi里面写SQL,包含正则表达式的时候,读取方括号报错:表达式解析错误: expecting STRING_LITERAL, found '['
例如报错的sql里有两处正则表达式:
代码块 | ||||
---|---|---|---|---|
| ||||
REGEXP_LIKE(SUBSTR(REPLACE(SUBJECTCODE, '_', ''), 9), '^[a-zA-Z]+')
REGEXP_LIKE(SUBJECTCODE, '11057201_[0-9]{6,}') |
解决方案
上述问题是由于SQL中存在特殊符号,需要转义成ASCII码才能使用。
其中上述2中由于 \ 为特殊字符,因此可修改为:
代码块 | ||||
---|---|---|---|---|
| ||||
select col1, instr(COL1 ,chr(92),1,1) from LIUJ.TEST |
如下图:
上述3中是由于^为特殊字符,可将需要处理的表达式修改为:
代码块 | ||||
---|---|---|---|---|
| ||||
REGEXP_LIKE(SUBSTR(REPLACE(SUBJECTCODE, '_', ''), 9), chr(94)||'[a-zA-Z]+')
REGEXP_LIKE(SUBJECTCODE, '11057201_[0-9]{6,}') ------该表达式未使用特殊字符,可正常支持,无需调整。 |
另外也经常存在多个字符拼接在一起的场景。多个特殊字符需要进行拼接,如oracle可以使用||拼接,mysql可以使用concat函数拼接:
...