sql >> Databáze >  >> RDS >> PostgreSQL

Jak nahradit zachycenou skupinu vyhodnoceným výrazem (přidání celočíselné hodnoty do skupiny zachycení)

Nemůžete to udělat v samotném regulárním výrazu, protože regulární výraz nepodporuje matematiku na zachycených skupinách, i když jsou všechny číselné znaky. Takže musíte získat skupinu, která představuje číslo patra, spočítat a spojit to zpět:

SELECT regexp_replace('B12F34', 'B(\d+)F(\d+)', 'Building \1 - Floor ') ||
       ((regexp_matches('B12F34', '[0-9]+$'))[1]::int + 10)::text;

Není příliš efektivní kvůli dvěma voláním regulárních výrazů. Další možností je získat tato dvě čísla v dílčím dotazu a sestavit řetězec v hlavním dotazu:

SELECT format('Building %L - Floor %L', m.num[1], (m.num[2])::int + 10)
FROM (
  SELECT regexp_matches('B12F34', '[0-9]+', 'g') AS num) m;



  1. Nelze nahrát a uložit obrázek do databáze pomocí php

  2. Jak vytvořit databázi mysql pomocí sequelize (nodejs)

  3. Používejte MSSQL a MySQL s CodeIgniter

  4. Dotaz tří spojených tabulek se vztahem many-to-many v JPA