T662, „Underscores in numeric literals“


BigQueryDb2 (LUW)DerbyH2MariaDBMySQLOracle DBPostgreSQLSQL ServerSQLite2005200720092011201320152017201920212023⚡ 3.5.7 - 3.50.0a⊘ 2008R2 - 2022⚠ 16 - 17cd⊘ 8.3 - 15⊘ 11gR1 - 23.9⚡ 5.0 - 9.4.0a⚡ 5.1 - 12.0.2a⚠ 2.2.220 - 2.3.232b⊘ 1.4.192 - 2.1.214⊘ 10.15.1.3 - 10.17.1.0⊘ 9.7 - 12.1.2⊘ 2.0
  1. Falsche Ergebnisse in cast
  2. Nur in Literalen, nicht in cast
  3. In cast nur eingeschränkt
  4. Auch in binären, oktalen und hexadezimalen Zahlen

Der SQL-Standard erlaubt es Systemen, Unterstriche (_) in Zahlen, die direkt in eine SQL-Anweisung geschrieben sind (Literale) zu ignorieren. Das kann man nutzen, um die Lesbarkeit von Zahlen zu verbessern.

SELECT 1_000_000
     , 0.000_001
     , 1_2.3_4e5_6
  FROM …

Unterstriche sind bei allen Literal-Typen erlaubt: In ganze Zahlen, in „Kommazahlen“ und in der Exponentialschreibweise („wissenschaftlichen Notation“). Wenn das System auch Binär-, Oktal- und Hexadezimal-Zahlen unterstützt, ist der Unterstrich auch dort erlaubt. Unterstriche dürfen jedoch nur zwischen zwei Ziffern (des Zahlensystems) stehen und es ist jeweils nur ein Unterstrich zwischen zwei Ziffern erlaubt. Ansonsten gibt es keine Einschränkung – insbesondere muss man damit keine Gruppen aus drei Ziffern bilden.

Die Syntax für Zahlenliterale kommt auch bei einer Typenkonvertierung von Zeichenketten auf Zahlen zum Tragen.0 Daher sind Unterstriche auch in Ausdrücken wie diesem erlaubt: cast('1_000' as integer).

BigQuery 2025-09-02Db2 (LUW) 12.1.2Derby 10.17.1.0H2 2.3.232MariaDB 12.0.2aaaMySQL 9.4.0aaaOracle DB 23.9PostgreSQL 17SQL Server 2022SQLite 3.50.0aaa1_0001_000.000_11_2.3_4e1_0CAST('1_000' AS …)CAST('1_000.000_1' AS …)CAST('1_2.3_4e1_0' AS …)
  1. Liefert keinen Fehler, aber ein falsches Ergebnis. Z. B. nur den Teil vor dem ersten Unterstrich
Optionale Funktionen
  • T661, „Non-decimal integer literals“

Normative Referenzen

Der Unterstrich (_) als Gruppenteiler in Zahlen ist in ISO/IEC 9075-2:2023 als optionale Funktion T662, „Underscores in numeric literals“ definiert. Sie erschien erstmals in der Ausgabe von 2023.

20 Jahre SQL-Evolution kann man nicht an einem Tag nachholen. Abonniere den Newsletter via E-Mail, Bluesky oder RSS, um sukzessive aufzuholen und modern-sql.com am Radar zu behalten.

Über den Autor

Foto von Markus Winand

Markus Winand gibt auf modern-sql.com Einblick in SQL und zeigt, wie es von verschiedenen Systemen unterstützt wird. Zuvor machte er use-the-index-luke.com, was er noch immer wartet. Markus kann als Trainer, Sprecher und Berater auf winand.at engagiert werden.

Sein Buch kaufen

Titelbild von „SQL Performance Explained“: Eichhörnchen läuft durchs Grass

Die Essenz: SQL-Tuning auf 200 Seiten

Jetzt Kaufen
(Taschenbuch und/oder PDF)

Sein Training

Markus verwandelt veraltetes SQL-92-Wissen in solides und zeitgemäßes SQL-Know-how

Erfahren Sie mehr»

Fußnoten

  1. ISO/IEC 9075-2:2023 §6.13 GR 8b and ISO/IEC 9075-2:2023 §6.13 GR 9b

Neuigkeiten Abonnieren

Markus Winands MailinglistenMarkus Winands RSS-FeedMarkus Winand auf LinkedInMarkus Winand auf XINGMarkus Winand auf TwitterMarkus Winand auf Bluesky
Copyright 2015-2025 Markus Winand. Alle Rechte vorbehalten.
Impressum | Kontakt | KEINE GEWÄHR | Handelsmarken | Datenschutz und DSGVO