...
数据集中的SQL语句在数据库工具中是正常执行的,但是在smartbi中却报“表达式解析错误:expecting STRING_LITERAL, found '['at line:1 column:399”...
解决方案
通常是由于SQL语句里面有特殊字符导致,需要将特殊字符进行转义,比如MySQL库中,char1、通常是由于SQL语句里面有特殊字符导致,大部分报错的是SQL中包含“^”,由于"^"在smartbi的SQL编辑器中是有标记对象(如参数、表、用户属性等)的特殊作用,因此不支持SQL语句中直接写^,这类特殊字符需要进行转义。
(1)MySQL库中,char(47) 代表字符“/”,char(94)代表字符"^"(向上尖括号),而),特殊字符的数值通过获取ACSII码数值实现,在MySQL的SQL语句中遇到特殊字符"^"在smartbi的SQL编辑器中是不支持直接写的,特殊符合的数值需要通过获取ACSII的方式实现,特殊字符在MySQL的拼接语法参考如下:需要拼接,可以使用concat函数拼接,参考如下:
select concat('[',cast(char(94) as CHAR(20)),'->]') as aa from categories limit 1
3、多个特殊字符需要进行拼接,如oracle可以使用(2)Oracles库遇到特殊字符需要拼接,可以在字符之间使用“||拼接,mysql可以使用concat函数拼接”:
Oracle:select to_number(regexp_substr('20180721',chr(91)||'0-9'||chr(93)||'*'||chr(91)||'0-9'||chr(93),1)) from dual
mysql:select cast(concat('a',char(92)) as char)
常见特殊字符转义参考
1、oracle、PostgreSQL1、Oracle、PostgreSQL
[:chr(91)
\:chr(92)
]:chr(93)
^:chr(94)
2、mysql、sqlserver2、MySQL、SqlServer
[:char(91)
\:char(92)
]:char(93)
^:char(94)
3、clickhouse
\n:char(10)