As Leigh Riffel said, the answer to my question depends partially on what you mean by "major."
I'm going with: No, there are no major RDBMS engines out there that can't handle name escaping/quoting. A quoted/escaped name is apparently properly called a delimited identifier.
Martin Smith pointed out that delimited identifier is in the SQL-92 specification:
<delimited identifier> ::=
<double quote> <delimited identifier body> <double quote>
Now, how well specifications are followed varies widely, but...
I've verified the following engines:
- Microsoft SQL Server supports the standard
"name" at least as far back as SQL Server 2000 (and also its own non-standard [name])
- Oracle supports the standard
- MySQL uses backticks (
`name`) by default, but if you set SET GLOBAL SQL_MODE=ANSI_QUOTES; it supports the standard
- Postgres supports the standard
- SQLite (I said it depended on what you call "major") supports the standard and SQL Server's
[name]
I figure the first four up there cover the vast majority of installations, and the fifth is important for embedded database work (as are a couple from the following list).
a_horse_with_no_name tells us that all of these support it too:
- Sybase (he says Sybase does it like Microsoft)
- DB2
- Apache Derby
- H2
- HSQLDB
(This being a Stack Exchange site, if you know of others that also support this, feel free to edit the answer and add them directly if you have enough rep. If you don't, just comment and I'll fold them in.)
<delimited identifier>is in the SQL 92 spec – Martin Smith Dec 4 '12 at 20:57