sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur kastar jag en sträng till heltal och har 0 vid fel i casten med PostgreSQL?

Jag brottades bara med ett liknande problem själv, men ville inte ha en funktion. Jag kom på följande fråga:

SELECT myfield::integer FROM mytable WHERE myfield ~ E'^\\d+$';

Postgres genvägar dess villkor, så du bör inte få några icke-heltal som träffar din ::integer cast. Den hanterar också NULL-värden (de matchar inte regexp).

Om du vill ha nollor istället för att inte välja, bör en CASE-sats fungera:

SELECT CASE WHEN myfield~E'^\\d+$' THEN myfield::integer ELSE 0 END FROM mytable;


  1. INDIA, STD Code Finder Script i PHP, MYSQL, JQUERY

  2. Släpp Unik begränsning från MySQL-tabellen

  3. T-SQL Dynamic SQL och Temp-tabeller

  4. Hur man visar radvärden som kolumner i MySQL