我已经尝试了Flink与SQL查询,当我在Flink SQL中使用IN查询时,它给出了错误。
我使用单引号,然后它给出下面的错误,因为内部单引号视为字符。
Class Employee
private String employeId;
private String employeDepartment;
StreamTableEnvironment streamTable = ..;
Table table = streamTable.sqlQuery(
"select * from employee where employeDepartment In ( 'CSE')")
原因:org.apache.calcite.sql.validate. sql验证器异常:传递给IN运算符的值必须在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)在sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)在java.lang.reflect.Constructor.newInstance(Constructor.java:423)在org. apache. calcite. runtime. Resources $ExInstWithCause.ex(Resources.java:505)在org.apache.calcite. runtime.Resources$ExInst.ex(Resources.java:599)处具有兼容类型
我已经尝试了``回勾,然后它给列没有找到。如何在Flink SQL中使用IN查询。我已经传递了类似select * from employee where employeepartment IN(CSE
)的值
则它给出在任何表中未找到的CSE列。
1条答案
按热度按时间bttbmeg01#
在SQL中,字符串的文字数组的语法如下:
如果employee表中的employeedDepartment字段是一个字符串数组,因为你必须在IN子句中使用相同的类型,它将像这样:
但是,employeedDepartment是一个数组似乎有些奇怪。也许它应该是一个字符串?