2017-03-01 56 views
0

我需要做一個簡單的查詢,Select語句如何使用逗號分隔符進行select語句查詢?

我想表的所有記錄與價值「的值a,VALUEB」搜索。

如果我用這個代碼,不能很好的工作:

String255 valueToFilter; 
valueToFilter = 'ValueA, ValueB'; 

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

但不工作,我需要保持所有紀錄值「值a」或「VALUEB」,該文件中有值,如: 「ValueA,ValueC」我也想得到。

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

謝謝!

+1

,而不是'like'使用'in' –

+0

謝謝@Anat,但如果我用我得到一個語法錯誤,我在寫一篇X ++這份工作,在AOT。 – ulisses

回答

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))); 
+0

嗨@Aliaksandr Maksimau感謝您的回答。我有一個問題是因爲我不知道數值。有時候我只能找到「ValueA」,有時候我必須找到「ValueA,ValueB,ValueN」等等......我喜歡你的時間。 – ulisses

+1

如果您不知道值的數量,您應該使用'query'對象來完成此任務。有'SysQuery'類'ValueLike','ValueLikeAfter'有兩種方法可供您使用。 –

+1

如果您的值不包含像*或?這樣的魔法字符,您可以直接在查詢中添加過濾器範圍:'queryRange.value(valueToFilter)' –

相關問題