Die folgenden PostgreSQL-Beispiele geben nur die Zeilen zurück, die keinen numerischen Wert in einer bestimmten Spalte haben.
Beispieldaten
Lassen Sie uns eine Tabelle mit Beispieldaten erstellen:
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (
c1 varchar(255)
);
INSERT INTO t1 (c1) VALUES
('0'),
('1'),
('+1'),
('-1'),
('00.00'),
('73.45'),
('+73.45'),
('-73.45'),
('.246'),
('-.34e7'),
('12.e-3'),
('1.2e+4'),
('a'),
('9afc'),
('e7'),
('+e0'),
('Ten'),
('5 Dollars');
SELECT * FROM t1;
Die Tabelle ist nun erstellt und enthält folgende Daten:
c1 ----------- 0 1 +1 -1 00.00 73.45 +73.45 -73.45 .246 -.34e7 12.e-3 1.2e+4 a 9afc e7 +e0 Ten 5 Dollars
Die Spalte ist ein varchar(255)
Spalte, also nicht numerisch. Es kann (und tut) Zahlen enthalten, aber diese werden als Zeichendaten gespeichert. Es kann auch beliebigen Text enthalten (was es auch tut).
Gib die nicht numerischen Werte zurück
Wir können die folgende Abfrage verwenden, um die nicht numerischen Werte aus der obigen Tabelle zurückzugeben:
SELECT c1
FROM t1
WHERE c1 !~ '^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$';
Ergebnis:
c1 ----------- 12.e-3 a 9afc e7 +e0 Ten 5 Dollars
Nicht-Ganzzahlen zurückgeben
Wenn wir nur Nicht-Ganzzahlen zurückgeben wollen, kann die Abfrage viel einfacher sein:
SELECT c1
FROM t1
WHERE c1 !~ '^[0-9]+$';
Ergebnis:
c1 ----------- +1 -1 00.00 73.45 +73.45 -73.45 .246 -.34e7 12.e-3 1.2e+4 a 9afc e7 +e0 Ten 5 Dollars
Enthält keine numerischen Daten
Wenn wir Zeilen finden möchten, die keine numerischen Daten enthalten, können wir Folgendes tun:
SELECT c1
FROM t1
WHERE c1 !~ '[0-9]+';
Ergebnis:
c1 ----- a Ten
In PostgreSQL !~
ist ein Operator, bei dem zwischen Groß- und Kleinschreibung unterschieden wird und der zum Zurückgeben von Werten verwendet wird, die nicht mit dem angegebenen regulären Ausdruck übereinstimmen. Verwenden Sie für Übereinstimmungen ohne Berücksichtigung der Groß-/Kleinschreibung !~*
.
Sie können ~
verwenden um alle Zeilen zurückzugeben, die tun Übereinstimmung mit dem regulären Ausdruck (und ~*
für Übereinstimmungen ohne Berücksichtigung der Groß-/Kleinschreibung).