Skip to Content
RhythmHelp Center
/

Available Documentation

  • Platform
  • CRM
  • Portals
  • Security & Settings
  • Accreditation
  • Membership
  • Finance & Billing
  • Orders & Inventory
  • Events
  • Certifications
  • Awards
  • Careers
  • Fundraising
  • Integrations
  • Sponsorships
  • Submissions

Coming Later

  • DocumentsComing Soon
Platform
  • Overview

Subjects

  • Signing In and Getting Around
  • Custom Fields and Objects
  • Forms
  • Queries
    • Overview
    • Queries and Saved Queries Explained
    • Query Types and Field Selection
    • Design and Run a Query
    • Save a Query and Organize Folders
    • Query Delivery Schedules
    • Query Criteria and Filter Operators
    • Query Results: Fields, Sort, Paging, and File Formats
    • Query Limits and Execution Rules
    • Troubleshooting
      • A Scheduled Query Stopped Arriving
  • Reports and Searches
  • Bulk Operations
  • Files
  • Notifications
  • Your Account
  1. Home
  2. Platform
  3. Queries

Query Criteria and Filter Operators

query criteria ‧ edit criteria ‧ filter operators ‧ all or any ‧ add condition ‧ add group ‧ is in list ‧ contains text ‧ does not equal ‧ is blank ‧ relative date ‧ query execution date ‧ date range ‧ greater than ‧ matches pattern ‧ regex ‧ compare two fields ‧ is in list apostrophe ‧ ISO 8601 ‧ timestamp criteria ‧ contact number is in list ‧ chapter ID ‧ product ID ‧ search-as-you-type

On This Page
  • Groups: All and Any
  • Operators
  • How You Enter a Value
  • Blank Values
  • Ranges on Numbers and Dates
  • Dates
  • Relative Dates
  • Narrowing to One Record
  • What Criteria Cannot Do
  • When Criteria Are Refused
  • Related

Criteria tell a query which records to include in the results. In the query designer, choose Edit Criteria... to open Edit Query Criteria. Add your conditions and groups, then choose Save Changes. After you save, the designer summarizes the criteria in plain language. If you have not added criteria, it shows This query has no criteria - all records will be returned.

Use this page to understand each condition type, which records it keeps, and the rules behind common surprises. For step-by-step instructions, see Design and Run a Query.

Groups: All and Any ​

Each group starts with All or Any, followed by of the following conditions are true:.

Choice Keeps a record when Use it for 
All Every condition and nested group in it is true Narrowing: members of type X and joined after a date 
Any At least one condition or nested group in it is true Alternatives: type X or type Y 

Choose Add Condition to add a condition to the current group. Choose Add Group to add a nested group with its own All or Any. You can nest groups to any depth.

If any row in that group is incomplete, both buttons are unavailable. Finish the row, or delete it with its trash icon. If Add Condition or Add Group still seems unavailable when every row looks complete, zoom out your browser or display. At some zoom levels, these controls and the field dropdowns on later conditions can move out of reach after a group has several conditions.

When you need to replace one condition with another, add the new condition before you remove the old one. A group must have at least one condition before you can save it, so a group with its only condition removed will not save.

A common mistake is putting alternatives and restrictions in the same Any group. If a query must return several donation types but only within a date range, keep the date conditions in the top All group. Put the types in a nested Any group, or use is in list. If you mix the date and type conditions together, records from any date come back when they match one type.

If a query you copied or adapted from a working example returns no rows, check that you copied its All/Any grouping exactly. The same conditions can return zero rows when they are arranged in a different group structure.

If contains text does not reliably match partial values for a picklist-style field, list the exact values you want instead. Use several equals conditions in an Any group, or use is in list, instead of relying on partial text matching.

Operators ​

The operators you see depend on the field's data type.

Operator Field types Keeps records where Notes 
equals Text, number, yes/no, list, date The field equals the value Text ignores letter case; identifiers must match exactly, including case. Dates match the whole day. Yes/No fields use Yes or No. For a multi-select field, equals and does not equal compare against one specific option at a time, not a set of several; use contains/does not contain to match against multiple selected values 
does not equal Text, number, list, date The field has a value other than the one you enter See Blank Values 
is in list Text, number The field equals any value in the list Enter one value per line (Enter values on each line), not separated by commas. Blank lines and repeated values are ignored. You need at least one value. Numeric fields such as a contact's Number field support this operator, so you can filter by a pasted list of numeric identifiers the same way as a list of text values. Very large lists, with thousands of values, can make the run fail; keep a list to roughly a thousand values or fewer, and split a larger one into batches. A value containing an apostrophe has occasionally kept this operator from previewing or running; if a list with an apostrophe stalls, try the record's ID instead of its name 
is not in list Text, number The field equals none of the values in the list Use the same one-value-per-line format. Blank lines and repeated values are ignored. You need at least one value. The same numeric-field support and the same large-list and apostrophe notes as is in list apply 
contains text Text The field contains the text anywhere Ignores letter case. The whole entry is treated as one piece of text 
does not contain text Text The field does not contain the text Records where the field is blank are not kept 
contains List (for example multi-select pick lists and checkboxes) The field includes any of the chosen values When two options share overlapping text — for example one label is fully contained inside another — you may need an inclusion condition for one option plus an explicit exclusion condition for the other overlapping option 
does not contain List The field includes none of the chosen values Records where the field is blank are not kept 
is greater than, is greater than or equal to Number, date The field is above the value, or at least the value These operators do not work on text fields; see Ranges 
is less than, is less than or equal to Number, date The field is below the value, or at most the value As above 
is blank Any The field has no value An empty text value is not blank 
is not blank Any The field has a value  
matches pattern Text The field matches a regular expression Case-sensitive. An invalid pattern makes the run fail 

In text searches, % and _ are wildcards. % stands for any run of characters, and _ stands for any single character. That means a search for "50%" matches more than the literal text you entered.

How You Enter a Value ​

Not every value is typed as plain text, even when you use a text operator such as equals or contains text.

  • Lookup and reference fields (for example a related organization, contact, or membership package) use a search-style picker. Type to find the record, then choose it. A few of these fields show options only after you start typing, so an empty-looking list does not mean there is nothing to find.
  • After you choose a value, the criteria editor sometimes displays the condition using the field's underlying identifier. For example, it may show Product ID instead of Product, or Package ID instead of Package. This is only a display change; the condition still filters using the record you chose.
  • A handful of fields, such as a chapter identifier, do not offer a picker. Type the identifier directly. You can still filter on several identifiers at once with is in list.
  • A small number of fields backed by a short, fixed list of existing values do not accept a value you type yourself, even with equals or contains text. Fields such as who created or who last modified a record keep only a value already in the list once you move to another field. If the criteria control will not accept the value you need, add the field as an output column instead and narrow the returned results manually. A field backed by a defined list of picklist-style values can behave the same way with contains text or does not contain text: instead of matching any part of the text you type, it can act like an exact selection from the list, so a partial value such as a word inside a longer option may not match the records you expect.
  • In at least one case, filtering by a related record's name field missed matches that the identical condition using the record's ID field caught. If a name-based condition on a related record returns fewer results than expected, try the corresponding ID field for the same relationship instead.

If a specific criterion's input does not behave the way this page describes for its data type, run a small test to see what it matches before you rely on it in a saved or scheduled query.

To find contacts whose email address may have a mistyped domain, such as a misspelled common provider, build the condition with does not contain text and the correct domain fragment instead of contains text. Excluding the domain you expect surfaces records that do not match it, including likely typos, for you to review.

Blank Values ​

  • is blank keeps records with no value at all. When a text field is saved as an empty value, it is not blank for this condition, so "email is blank" misses contacts whose email appears empty.
  • does not contain text and does not contain do not keep records where the field is blank.
  • In practice, does not equal on a text field usually behaves the same way. It keeps only records that have some other value, so it excludes records where the field is blank. Pair it with is blank in an Any group if blank records should count too.
  • A field can display as No in your query results even when nothing was ever stored for it, because the display fills in No for a blank value. If equals No unexpectedly returns nothing for a field like this, use does not equal Yes or is blank instead to capture those records.
  • For at least one yes/no-style field — a communication preference's enabled flag — equals Yes or equals No can return no matches even when qualifying records exist. is not blank, or contains text with the value, can find them instead.
  • Adding Contact - ID is not blank to contact-based criteria can exclude leftover blank rows left behind by a deleted contact, since only a current, real contact record has an ID.

A checkbox-style field is typically saved as Yes when it is checked. When it is unchecked, it is often stored as blank instead of an explicit No. That is why equals No alone can miss unchecked records, and why the pattern below pairs equals No with is blank.

When blank records should count, include them explicitly. For an opt-out field that can be Yes, No, or blank, use an Any group with equals No and is blank to keep everyone who has not opted out. With two opt-out fields, use one such Any group for each field inside a top-level All group. A single does not equal Yes per field under All looks equivalent, but it is not. It would incorrectly exclude a record where one field is blank and the other is Yes, so each field needs its own blank-inclusive group first.

Tip

When you are not sure whether you want "exclude if both fields are Yes" or "exclude if either field is Yes," write out a few example records and mark which ones should be excluded. The answer determines whether you combine your conditions with All or Any.

To find records that have no related membership, such as non-members, use is blank on the membership field. For example, a query of type Registrations in the events area with the membership field set to blank identifies event participation by people who are not members.

Ranges on Numbers and Dates ​

The four range operators compare numbers and dates only. If you use one on a text field, even a text field that holds digits, the run fails. They also cannot split text alphabetically, so "last name is greater than F" does not work. Sort by the text field instead.

Pay close attention to the boundary you choose. is greater than excludes the value itself, so a membership starting exactly on the boundary date is left out. Use is greater than or equal to to include it.

Dates ​

  • Specific dates. The date picker saves a day, not a time. You cannot filter on a time of day, even for fields that show a time in the results. For criteria built directly, such as through the API or a custom query definition, some timestamp fields — for example when a record was last modified — accept a full ISO 8601 value with an explicit time zone (for example 2025-02-25T23:40:53Z). That lets you filter more precisely than the console's day-only date picker allows.
  • Date fields (a day with no time) are compared as days, with no time zone. A login-date field, such as a portal last-login date, behaves like other date fields and uses the same date-style controls and operators described here.
  • Date-and-time fields, such as when a record was created or last changed, compare the day you pick using these rules:
Operator Treatment of the day you pick 
equals, does not equal The whole calendar day, at any time 
is greater than From the start of the following day, US Eastern time 
is greater than or equal to, is less than, is less than or equal to Midnight UTC at the start of that day, which is the evening of the day before in US time zones 

For example, "created on or before 31 January" on a date-and-time field misses most of 31 January in US time zones. Check records near your boundaries when precision matters.

An exact equals match on a date can be too narrow when you are not certain of the precise stored value, such as when you are troubleshooting a missing record or the year or day was typed incorrectly. Instead of failing outright, an incorrect exact date can leave Query Results stalled on Running query... without showing a clear error. Switch to a broader operator, or a small range around the date you expect, to find records that an exact match misses.

Relative Dates ​

A relative date moves with each run, so a saved or scheduled query keeps checking the same window.

  1. On a date condition, select the alarm-clock icon (Toggle relative date).
  2. Build the value from the pickers: a number, a unit such as days, and whether it falls before, on, or after the query execution date. For example, use "30 days before the query execution date", or "on the query execution date" for today.

If you need several relative-date conditions in one query, the editor's dialog scrolls so you can keep adding them without losing access to the ones already there.

Rhythm works out the date when each run starts, using the current time in UTC, so windows near midnight can shift by some hours. Examples:

To keep Condition 
Records created in the last 7 days Created date is greater than or equal to 7 days before the query execution date 
Memberships expiring in exactly 90 days Expiration date equals 90 days after the query execution date 
End date today or later, or no end date An Any group: end date is greater than or equal to on the query execution date, and end date is blank 

There is no dynamic "last month" option. Relative dates count days before or after the query execution date, not a rolling previous calendar month. For a report meant to run on the first of each month and cover the prior month, edit the query's fixed date range each time instead of relying on a relative-date condition to roll over automatically.

For the relative-date rules used elsewhere in Rhythm, see Expression Functions and Relative Dates.

Narrowing to One Record ​

Some query types are about one parent record, such as one event's registrations. You choose the record in Select Query Type, and the designer shows it above the criteria with (change) to pick another. A query type that requires a record cannot run without one. You can choose only one record per query. If you clear the record in the designer, the line disappears; start a new query to choose one again.

What Criteria Cannot Do ​

  • Compare two fields. There is no condition such as "paid date is after due date". Filter on fixed or relative dates instead, or use an external data process for more complex comparisons.
  • Count or total. Criteria choose records; they cannot keep "chapters with more than 10 members". See Query Limits and Execution Rules.
  • Use fields the query type does not offer. A condition on a field that has since been removed makes the run fail. See Save a Query and Organize Folders to repair it.

Fields used in criteria do not count toward the limit on output and sort fields.

When Criteria Are Refused ​

If Rhythm cannot use the criteria, the designer shows Unable to preview query, or Query Results shows Unable to execute query, with the reason. Some problems, such as a range condition on a text field, can instead leave Query Results on Running query... this will take a few seconds.... In either case, reload, reopen the query in the designer, and check each condition's field, operator, and value.

A saved query can also start returning unexpected results with no error if a field used in a condition changes internally on Rhythm's side. A condition's saved value can stop displaying in the criteria editor while it continues to filter with the value you originally chose, or the narrowing from a condition can quietly change. If a saved query's results shift with no changes on your part, reopen it in the designer, check each condition's field and value, and resave it. Choose the value again if it is not shown.

If a saved query's results look wrong after you open it from a dashboard or KPI link, check the actual criteria in the query designer instead of trusting only the query's name. The name shown can be misleading while the criteria still differ from what you expect.

Related ​

  • Design and Run a Query
  • Query Types and Field Selection
  • Query Delivery Schedules
  • Expression Functions and Relative Dates

Continue in This Subject

PreviousQuery Delivery SchedulesNext Query Results: Fields, Sort, Paging, and File Formats

Related Articles

  • Design and Run a Query

    Start a query from a query type, choose its criteria, columns, and sort in the query designer, run it, and read or download the results.

  • Query Types and Field Selection

    A query type decides which records a query lists and which fields you can filter, show, and sort on.

  • Query Delivery Schedules

    Have a saved query run on a timetable and email its results to a list of people.

  • Expression Functions and Relative Dates

    Reference for writing expressions in Rhythm (field paths, comparisons, text values, and the editor's messages) and for relative dates such as "30 days before the query execution date", with worked examples.

On This Page

  • Groups: All and Any
  • Operators
  • How You Enter a Value
  • Blank Values
  • Ranges on Numbers and Dates
  • Dates
  • Relative Dates
  • Narrowing to One Record
  • What Criteria Cannot Do
  • When Criteria Are Refused
  • Related
Rhythm Help Center© Rhythm Software

Search article titles, settings, tasks, and troubleshooting topics. Press Enter to see results.

Browse Platform Documentation