I have the following XML request that returns the list of all ledgers from Tally.
<ENVELOPE>
<HEADER>
<VERSION>1</VERSION>
<TALLYREQUEST>Export</TALLYREQUEST>
<TYPE>Collection</TYPE>
<ID>Ledgers</ID>
</HEADER>
<BODY>
<DESC>
<STATICVARIABLES>
<SVEXPORTFORMAT>SysName:XML</SVEXPORTFORMAT>
</STATICVARIABLES>
<TDL>
<TDLMESSAGE>
<COLLECTION ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No" ISINTERNAL="No" NAME="Ledgers">
<TYPE>Ledger</TYPE>
<BELONGSTO>Yes</BELONGSTO>
<NATIVEMETHOD>Name</NATIVEMETHOD>
</COLLECTION>
</TDLMESSAGE>
</TDL>
</DESC>
</BODY>
</ENVELOPE>
Now in the above code, I added a filter as follows:
<TDLMESSAGE>
<COLLECTION ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No" ISINTERNAL="No" NAME="Ledgers">
<TYPE>Ledger</TYPE>
<BELONGSTO>Yes</BELONGSTO>
<NATIVEMETHOD>Name</NATIVEMETHOD>
<FILTERS>Site</FILTERS>
</COLLECTION>
<SYSTEM TYPE="Formulae" NAME="Site">$Name = 'Site'</SYSTEM>
</TDLMESSAGE>
So, what it does is it checks if there is a ledger called 'Site' This filter works perfectly. It only gives me one ledger whose name is 'Site'. But, what I need is a list of all the ledgers that contain the word 'Site' anywhere in their name. Thus, I tried to use LIKE operator instead of =.
<SYSTEM TYPE="Formulae" NAME="Site">$Name LIKE 'Site'</SYSTEM>

This did the trick.