REGEXP_LIKE wirft einen Fehler in pgadmin

 VFC is of  INT datatype.

VHC is of decimal(15,2) datatype.

Ich stehe vor diesem Problem, das in Text umgewandelt wurde, aber das Problem besteht immer noch.

SELECT COUNT(*) WHERE REGEXP_LIKE(0.00 , '^[0-9]*$');

Actual Query:

SELECT COUNT(*)
            INTO VFC 
           WHERE REGEXP_LIKE(VHC, '^[0-9.]*$');

ERROR: function regexp_like(numeric, unknown) does not exist LINE 1: SELECT COUNT(*) WHERE REGEXP_LIKE(0.00 , '^[0-9]*$'); ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. SQL state: 42883 Character: 23

Regular Expressions arbeiten ausschliesslich mit Strings, nicht mit Zahlen. Deswegen kannst Du regexp_like auch nicht mit einer Zahl aufrufen. Du musst die Zahl in einen String umwandeln

WHERE REGEXP_LIKE(VHC::text, '^[0-9.]*')

Aber der Test ist ziemlich sinnlos, weil der Test ob die Zahl eine Zahl ist, immer erfolgreich sein wird. Das ist im Grunde das Gleiche wie:

WHERE true
1 „Gefällt mir“
Hallo,

Ich habe den folgenden Code bereits ausprobiert, aber das ist auch fehlgeschlagen.

SELECT COUNT(*) --IN VFC
WHERE REGEXP_LIKE(VHC::text, '^[0-9.]*$')::text;

ERROR: function regexp_like(text, text) does not exist

regexp_like gibt es erst seit Postgres 15. Vermutlich verwendest Du eine ältere Version.

Aber wie gesagt: die Bedingung macht keinen Sinn. Lass sie einfach weg.

Aber wenn Du wirklich Deine Abfrage unnötig langsamer machen willst, dann nimm den ~ Operator:

WHERE VHC::text  ~ '^[0-9.]*'

Im Übrigen macht es auch absolute keinen Sinn das Ergebnis von regexp_like in einen Text umzuwandeln.

Dieses Thema wurde automatisch 60 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.