如何使用WHERE in子句在Marklogic JAVA API中编写SQL查询?
我正在使用Marklogic Optic Java API,如下所示:-如何使用WHERE in子句在Marklogic JAVA API中编写SQL查询?,java,marklogic,marklogic-9,Java,Marklogic,Marklogic 9,我正在使用Marklogic Optic Java API,如下所示:- ModifyPlan plan = p.fromView(SchemaName, ViewName) .where(p.eq(p.col("COL1"), strColValue)) .select(colSeq); 现在我有了数据列表&我需要在这个查询中使用WHERE-IN子句 select * from table where col in ('val1', '
ModifyPlan plan = p.fromView(SchemaName, ViewName)
.where(p.eq(p.col("COL1"), strColValue))
.select(colSeq);
现在我有了数据列表&我需要在这个查询中使用WHERE-IN子句
select * from table where col in ('val1', 'val2'.....,'valn');
谁能告诉我如何使用MarkLogicJavaAPI来实现这一点
谢谢和问候
Renuka Patil使用Java在Marklogic DB上使用SQL的一种方法是JDBC。您可以执行以下步骤:
try {
Connection conn1 = DriverManager.getConnection("jdbc:postgresql://MYHOST:PORT/?preferQueryMode=simple","USER","PWD");
Statement stmt = conn1.createStatement();
String sqlstmt = "select SCHEMA.VIEW.COLUMN1, VSCHEMA.VIEW.COLUMN2, SCHEMA.VIEW.COLUMN3 from SCHEMA.VIEW where SCHEMA.VIEW.COLUMN4 in ('VAL1', 'VAL2', 'VAL3')";
ResultSet rs = stmt.executeQuery(sqlstmt);
while(rs.next()){
String c1= rs.getString("COLUMN1");
String c2= rs.getString("COLUMN2");
System.out.println("COL1:"+c1);
System.out.println("COL2:"+c2);
}
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
注:
希望它能帮助您:-)最简单的方法可能是在连接条件的右侧传入一系列字符串:
ModifyPlan plan = p.fromView(SchemaName, ViewName)
.where(p.eq(p.col("COL1"), p.xs.stringSeq("val1", "val2",...,"valn")))
.select(colSeq);
我看到
p.xs.stringSeq
已被弃用。本文件建议我方按以下方式使用:
{
ModifyPlan plan = p.fromView(SchemaName, ViewName)
.where(p.eq(p.col("COL1"),
p.seq(p.xs.string("val"),p.xs.string("val2"))))
.select(colSeq);
}
我从p.xs.stringSeq
更改为p.seq