Files
datacontroller.io/content/feed/full-table-search/index.md
T
dc 7561bb0c39 feed: correct the case sensitivity example in the full table search post
The post claimed `smith` finds `Smithson`, which only holds for a case
insensitive match. The comparison is case sensitive, so the search term has
to match the case as stored: `Smith` finds `Smithson`, and `smith` finds
`Goldsmith`, but `smith` will not find `Smithson`.
2026-09-16 23:42:45 +00:00

4.0 KiB

title, description, date, author, authorLink, tags, previewImg
title description date author authorLink tags previewImg
Full Table Search: Find Any Value in Any Table Type a value into the search box and Data Controller scans every column for it - no query, no WHERE clause. 2026-09-15 17:00:00 Data Controller https://www.linkedin.com/showcase/data-controller-for-sas
Announcements
./full-table-search.jpeg

Full Table Search: Find Any Value in Any Table

Finding a value in a large table usually means writing a query first: guess which column it lives in, write a WHERE clause, run it, and try again when you guess wrong. Data Controller's full table search removes that step. Choose a library and table in the Viewer, type a value into the search box and press Enter - every column in the table is scanned for it, and the matching rows come straight back into the grid.

How it works

The search box sits in the Viewer toolbar, next to a Numeric checkbox:

  • Text search matches part of a value, so Smith finds Smithson and smith finds Goldsmith. The comparison is case sensitive, using the SAS® CONTAINS operator, so smith will not find Smithson.
  • Numeric search (tick the box) matches the number exactly against every numeric column in the table.

Whichever you use, the results are ordinary rows in the Viewer, with the rest of the screen behaving exactly as it does for a normal view.

Any database, not just SAS datasets

The scan runs inside SAS, against whichever libname engine the table is assigned to - so it is not limited to SAS datasets.

Built on open source

This feature, like most of Data Controller, is built on the SASjs Macro Core library, using the %mp_searchdata() macro. The macro assembles a single DATA step with one OR clause per column - a CONTAINS test for character columns, an equality test for numeric ones - and writes out only the matching records. It is MIT licensed, so you can read, test and audit the code that is running against your data.

A few things worth knowing:

  • The search respects your current filter, Row Level Security and Column Level Security - it scans the view you are entitled to see, not the raw table.
  • Full table search is available in ViewBoxes as well, so the related tables lined up beside your main grid can be searched the same way.
  • Nothing is shipped to an external index or search service: the scan happens on your own SAS platform.

See it in action:

More detail in the Viewer documentation.