如何使用逗号分隔符执行select语句查询?

时间:2017-03-01 10:26:09

标签: range axapta dynamics-ax-2012 x++

我需要做一个简单的查询,选择声明

我想在Table中搜索所有带有值的记录" ValueA,ValueB"。

如果我使用此代码,则效果不佳:

String255 valueToFilter;
valueToFilter = 'ValueA, ValueB';

select count (RecId) from MyTable
                    where MyTable.Field like valueToFilter ;

但是没有工作,我需要保持所有记录的价值" ValueA"或者" ValueB",如果在文件中有值如下:" ValueA,ValueC"我也想要。

我不知道值的数量( valueToFilter )。

谢谢!

1 个答案:

答案 0 :(得分:2)

从我的观点来看,最简单的方法是拆分过滤字符串:

String255 valueToFilterA = 'ValueA';
String255 valueToFilterB = 'ValueB';
;

select count (RecId) from MyTable
    where MyTable.Field like valueToFilterA 
       || MyTable.Field like valueToFilterB;

如果您不知道值的数量,则应使用query对象动态添加范围:

Query                   query = new Query();
QueryRun                queryRun;
QueryBuildDataSource    qbds;
QueryBuildRange         queryRange;
container               conValues;
;

qbds = query.addDataSource(tableNum(MyTable));

for (i = 1; i <= conlen(conValues); i++)
{
    queryRange = qbds.addRange(fieldNum(MyTable, Field));   
    queryRange.value(SysQuery::valueLike(conPeek(conValues, i)));
} 

queryRun = new QueryRun(query);    
info(strFmt("Records count %1", SysQuery::countTotal(queryRun)));