sql >> Database teknologi >  >> RDS >> Mysql

udtræk tal fra en *varchar* celle og lav matematik med dem i ren mysql

Det kan bestemt lade sig gøre, men SQL er designet omkring aksiomet for atomværdier (dvs. første normalform ). At opdele et felt er næsten aldrig nødvendigt. Omtrent den eneste gang, du bliver nødt til at bruge det i en veldesignet database, er med datoer, hvor du måske vil arbejde med kun måneden eller året for et datofelt. Selvom du helt sikkert vil finde databaser, som en eller anden idiot har designet, og som du er tvunget til at arbejde med, og som overtræder dette kernekoncept, er det en dårlig idé at starte med at prøve at finde ud af, hvordan man arbejder med disse designs.

Derudover får dit sidste trin at "lagre i den celle 239" mig til at tro, at du stadig ser på databaser, som om de er regneark. Det er de ikke. En anden kernekomponent i en database er, at rækkefølgen af ​​rækker ikke er vigtig. Felter er på den anden side altid relateret til andre felter i samme række. Du kan indstille værdien af ​​et af felterne til at være noget, hvor ID-feltet for den pågældende post er 239, men du vil generelt aldrig bekymre dig om, at en post er den 239.

Når det er sagt, her er en forespørgsel, der vil gøre, hvad du vil:

Antagelse:feltets format er "11a22 b". Det vil sige et tocifret tal efterfulgt af et bogstav, efterfulgt af et andet tocifret tal, muligvis efterfulgt af et mellemrum og bogstavet 'b'.

SELECT CAST(SUBSTRING(Value,1,2) AS INT) * CAST(SUBSTRING(Value,3,2) AS INT) + CASE RIGHT(Value,1) WHEN 'b' THEN -1 ELSE 0 END FROM MyTable

  1. hent 3 rækker hver dag, hvis du planlægger for 1 år

  2. MariaDB JSON_ARRAYAGG() Forklaret

  3. Hvorfor skalerer NoSql-databaser bedre end relationelle databaser? Hvordan skal jeg vælge mellem dem?

  4. Integrering af billede med jQuery AutoComplete