2017-01-13 1 views
0

Wir haben eine Arzneimittelsäule in unserer Datenbank und diese enthält den Medikamentennamen (z. B. Xanax) und seine Größe (0,5 mg).Gibt es eine Möglichkeit, Daten von einem Feld in mySQL zu trennen?

z. Drug Name: Xanax 0.5mg

Allerdings müssen wir die beiden Daten trennen, ohne eine neue Spalte für die Größe zu erstellen, da dies eine enorme Auswirkung auf die Datenbankstruktur haben wird. Wir müssen nur eine Liste mit nur dem Namen des Medikaments ausfüllen, ohne seine Größe basierend auf diesem einzelnen Feld/Spalte.

Gibt es eine Möglichkeit, nur den Namen des Medikaments zu extrahieren? Sagen wir, indem wir den Benutzer zwingen, eine Klammer um die Medikamentengröße herum hinzuzufügen (z. B. Xanax (0,5 mg))? ? Bedeutung nur extrahieren alle die Zeichenfolge, die vor dem ersten "(" Charakter kommt

Oder gibt es einen besseren Weg

Antwort

1

Versuchen Sie folgendes:

Mytable:

id name 
1 Xanax (0.5mg) 

Abfrage:

select id, substring_index(name,'(',1) from tb_mx; 

Wir kommen wieder:

1, Xanax 

es also entsprechend verwenden.

0

Sie können drug's Daten im JSON-Format speichern

{"some_unique_id":{ 
    "name": "Xanax", 
    "quantity": "0.5mg" 
}} 

Und dann Functions That Search JSON Values für MySQL 5.7 erhalten verwenden, welche Parameter Sie benötigen.

0

Ich habe einige Erfahrung mit DB in der Pharma-Industrie verwendet und ich kann sagen, es ist nicht in Ordnung Doit so.

Hier ist, was ich denke, u tun müssen (normalisieren)

Tabelle UM (wie mg, ml, usw.) Tabelle Verpackung (wie Menge pro Stück, Stück nr, FK ID_UM) Tabelle Drugs (Name, fk id_packing)

Mach dir keine Sorgen über Platz. Die Tabellen UM und Packing werden viele wiederverwendbare IDs haben, und eine Spalte int braucht weniger als varchar.

Oder kann JSON ideea verwendet werden, aber dann werden Sie einige Probleme in der Berichterstattung Teil haben.

+0

Warum denken Sie, es ist nicht in Ordnung, es so zu machen? – catandmouse

Verwandte Themen