我有一个需要从数据库中提取数据的要求。查询是-
SELECT e.Data AS EntityBlob, f.Data AS FpmlBlob
FROM [Trades.InventoryRecord] ir, EntityBlob e, FpmlBlob f
WHERE %s AND uid = e.uid AND uid = f.uid
这里 %s 是用户将从 html 表单输入的 where 子句之后的谓词。
用户输入将采用以下形式:
1. TradeDate = ' 2013-04-05
' AND IsLatest = 'TRUE'
2. StreamId= ' IA0015
'
3. 查询也可能有 IN 子句
现在,当呈现此查询时,我得到异常不明确的列 streamId 或不明确的列 IsLatest,因为这些列存在于多个同名的表中。因此,为了消除这种歧义,我需要将查询修改为 - ir.IsLatest 或 ir.StreamId
要通过java代码做到这一点,我需要先在where子句之后解析谓词,提取列名并在每个列名之前插入表名别名-'ir',以便查询变为-
SELECT e.Data AS EntityBlob, f.Data AS FpmlBlob
FROM [Trades.InventoryRecord] ir, EntityBlob e, FpmlBlob f
WHERE ir.TradeDate = '2013-04-05' AND ir.IsLatest = 'TRUE' AND uid = e.uid AND uid = f.uid
解析此谓词的最佳方法是什么,或者是否有任何其他方法可以达到相同的结果?