SQL select select列,如果attribute为true

时间:2014-10-16 18:20:34

标签: sql

我对此深表思考,但我要做的是只从object.attribute中选择真实的列。

场景:我有一个函数java,在这个函数内部我有object,其中有50 attribute有真或假。我正在尝试创建一个动态查询,仅在object.attributetrue时才选择列。例如,Person是我的对象,有50个属性name, age, sex, wage,依此类推。如果Person.nametruePerson.sextruePerson.wagefalsePerson.agefalse,请选择仅namesex列。

我尝试使用String sql = "...IF ELSE ..."String sql = "...CASE WHEN...",但我无法创建true进来的逻辑,如果column_name = object.attribute(true),则返回null。创建程序更好吗?或者它可以在查询中完成?我怎样才能做到这一点?

如果仅显示姓名和性别,则必须以“John”,“31”为例

1 个答案:

答案 0 :(得分:0)

您需要制作动态SQL并使用参数来正确执行此操作。因此,您将为SELECT构建SQL字符串,但查询所需的任何非静态参数都是参数。查询本身。

所以,你会在代码中得到一些东西:

String Sql = ""
Sql=sql + " SELECT "
IF attribute.value==true then Sql=sql + value.name + " "
IF attribute.value==true then Sql=sql + value.name + " "
IF attribute.value==true then Sql=sql + value.name + " "
Sql=sql + "FROM TABLE WHERE StaticField=StaticValue or StaticField=@Var1"

你永远不应该连接用户输入;这是参数(上例中的@ Var1)发挥作用的地方。