Thanks @BKBK and @WolfShade. Both options work 🙂 I'm not sure which one is the most efficient, I'll have to flip a coin.
I did actually just come up with something most likely a little less efficient, I created a query in memory, added the data from myfixedlist and then did a query using NOT IN, it also worked, but I suspect your options are better. I put it in here anyway as option 3.
OPTION 1
<cfscript>
myfixedlist="7,8,9";
variablelist = "1,2,3,4,5,6,7,10";
listDiff = listFilter(myfixedlist,function(item){
return listFind(variablelist,item,",") == 0;
});
</cfscript>
<cfoutput>#listDiff#</cfoutput>
OPTION 2
<cfset myFixedList = "7,8,9" />
<cfset myVarList = "1,2,3,4,5,6,7,10" />
<cfset myNOTlist = "" />
<cfscript>
function getNotInFixed(item){
if(NOT ListFind(myVarList,item)){myNOTlist = ListAppend(myNOTlist,item);}
}
myMap = ListMap(myFixedList,getNotInFixed);
WriteOutput(myNOTlist);
</cfscript>
OPTION 3
(VariableList would be set elsewhere in the code)
<cfset MyFixedList = QueryNew("MyFixedListUID")>
<cfset QueryAddRow(MyFixedList,3)>
<cfset Temp = QuerySetCell(MyFixedList, "MyFixedListUID","7","1")>
<cfset Temp = QuerySetCell(MyFixedList, "MyFixedListUID","8","2")>
<cfset Temp = QuerySetCell(MyFixedList, "MyFixedListUID","9","3")>
<CFQUERY DBTYPE="query" NAME="GetNewList">
SELECT MyFixedListUID
FROM MyFixedList
WHERE MyFixedListUID NOT IN (<cfqueryparam value="#VariableList#" list="yes">)
</CFQUERY>