sql >> Databasteknik >  >> RDS >> Mysql

mysql/oracle lagrad matematisk formel

Jag tror att det du säger är att du vill att databasen ska analysera formelsträngen. Till exempel, för Oracle kan du

  • Lägg till en kolumn i tabellen för att innehålla resultatet
  • Kör en uppdateringssats som skulle anropa en PL/SQL-funktion med värdena för kolumnerna i tabellen och formelns text

    uppdatera {tabell} set formula_result =fn_calc_result (kol1, kol2, formelkolumn);

PL/SQL-funktionen skulle skapa en sträng genom att ersätta "col1" och "col2" och så vidare med de faktiska värdena för dessa kolumner. Du kan göra det med vanliga uttryck, så länge formlerna är konsekvent skrivna.

Använd sedan

execute immediate 'select '||{formula}||' from dual' into v_return;
return v_return;

för att beräkna resultatet och returnera det.

Naturligtvis kan du också skriva din egen parser. Om du bestämmer dig för att gå den vägen, glöm inte att hantera operationsprioritet, parenteser och så vidare.



  1. Hur kan jag se alla specialtecken som är tillåtna i ett varchar- eller char-fält i SQL Server?

  2. Tabellversionering (historiska tabeller) och ordningstabellrelationer

  3. Google Maps geokoder för att hitta närliggande platser från MySQL-databasen

  4. Vad är skillnaden mellan USER() och SYS_CONTEXT('USERENV','CURRENT_USER')?