Finding Gaps in Sequential Data Using SQL Server
Many systems expect a sequential range of numbers for invoices, ticket numbers, and more. Learn how you can identify where you have gaps in your sequences.
2026-09-21
3,627 reads
Many systems expect a sequential range of numbers for invoices, ticket numbers, and more. Learn how you can identify where you have gaps in your sequences.
2026-09-21
3,627 reads
In Part 2 of this series we learn how OUTER APPLY can be used in your queries to return data, even when there are no matches between tables.
2026-08-12
3,257 reads
As database changesets accumulate over time, they gradually become more than deployment artifacts. This level explores how a well-organized changeset library evolves into a replayable representation of the database’s structural history, supporting not only reliable deployments but also reconstruction, auditing, and long-term maintainability. Through practical examples and a real-world case study, it shows why maintaining coherent Create and Rollback scripts continues to provide value long after a successful production deployment.
2026-08-05
687 reads
Learn the basics of the CROSS APPLY operator with a few examples in this short piece.
2026-07-27
6,020 reads
This article shows how the TRY_PARSE() and TRY_CONVERT() functions can be used to handle data quality issues and ensure that your software continues to function without throwing errors.
2026-07-13
3,750 reads
Learn about an alternative strategy for avoiding hardcoded literal values in SQL Server queries by using single-row views designed to mimic enum behavior.
2026-06-26
3,382 reads
As database development scales across multiple contributors, concurrency becomes an inherent aspect of the process. Changes that are individually correct may still conflict when developed against a shifting baseline. This level introduces a disciplined approach to managing parallel changesets by controlling their scope, identifying overlap, and resolving conflicts through realignment. By ensuring that only one changeset retains its original baseline while others are adapted accordingly, deployments remain predictable and consistent. Once released, changesets are treated as immutable, and further evolution proceeds through new, forward-only changes.
2026-06-24
1,194 reads
This level examines how a rehearsed changeset is transformed into production-ready deployment artifacts. By consolidating scripts into controlled execution units and validating the resulting artifacts, the approach ensures that production deployment remains predictable and aligned with what was proven during rehearsal.
2026-06-10
1,168 reads
Introduction When developers first learn SQL aggregation, they usually start with the GROUP BY clause. It works well for summary reports because it combines multiple rows into a single result for each group. For example, you can calculate total sales per region or average salary per department. The limitation of GROUP BY appears when you […]
2026-06-05
4,521 reads
Learn a quick way to calculate distances without resorting to spatial calculations.
2026-05-08
2,464 reads
By Steve Jones
I caught this interesting item over on Pinal Dave’s blog: Eleven Interview Questions that...
By Hemantgiri
I use color-coded connections in SSMS to distinguish Production, Pre-Production, UAT, and Development. But...
WhatsApp CS 628218520154 Jl. Suryopranoto No.40, RT.12/RW.7, Petojo Utara, Kecamatan Gambir, Kota Jakarta Pusat,...
WhatsApp CS 628218520154 Jl. Pegangsaan Timur No.1, Cikini, Kec. Menteng, Kota Jakarta Pusat, Daerah...
WhatsApp CS 628218520154 Jl. Pintu Air Raya No.36 Q, RT.6/RW.1, Ps. Baru, Kecamatan Sawah...
I have some data in a SQL Server 2025 database. It looks like this for the dbo.Customer table:
CustomerID CustomerName PreferredName 1 Steve Steve 2 Andy Andy 3 Brian Brian 4 Allan Allan 5 Devin Devin 6 Steve Steve 7 Sally SallyI want to detect which names have a single trailing space. The CustomerName is a varchar() and the PreferredName is a CHAR(). Does this query detect the problem rows?
SELECT
CustomerID,
CustomerName,
PreferredName
FROM Customer
WHERE CustomerName <> RTRIM(CustomerName)
OR PreferredName <> RTRIM(PreferredName); See possible answers