UNNEST-Funktion in MySQL wie POSTGRESQL

8

Gibt es eine Funktion wie "unnest" von POSTGRESQL auf MySQL?

Abfrage (PSQL):

%Vor%

Ergebnis (als Tabelle):

%Vor%     
Phillip Parente 08.12.2014, 18:48
quelle

1 Antwort

8

Kurze Antwort

Ja, das ist möglich. Aus technischer Sicht können Sie dies mit einer Abfrage erreichen. Aber die Sache ist - höchstwahrscheinlich versuchen Sie, einige Logik von der Anwendung zum Datenspeicher zu übergeben. Datenspeicherung soll Daten speichern , nicht um sie darzustellen / zu formatieren oder noch mehr Logik anzuwenden.

Ja, MySQL hat keinen Array-Datentyp, aber in den meisten Fällen ist dies kein Problem und die Architektur kann so erstellt werden, dass sie diesen Einschränkungen entspricht. Und auf jeden Fall, selbst wenn Sie es irgendwie erreichen (wie - siehe unten) - Sie werden später mit diesen Daten nicht richtig arbeiten können, da es nur Ergebnismenge sein wird. Sie können es natürlich speichern - also zum Beispiel, um später zu indizieren, aber dann ist es wieder eine Aufgabe für eine Anwendung - also diesen Import zu erstellen.

Stellen Sie außerdem sicher, dass es sich nicht um einen Jaywalker Fall handelt. Speichern Sie daher keine durch Trennzeichen getrennten Werte und versuchen Sie später, sie zu extrahieren.

Lange Antwort

Aus technischer Sicht können Sie es mit kartesischem Produkt der zwei Zeilensätze machen. Verwenden Sie dann eine bekannte Formel:

  

N = d 1 x 10 1 2 <10> 2 + ...

Sie können also eine Tabelle mit "allen Zahlen" erstellen und später durchgehen. Diese Iteration kann zusammen mit MySQL String-Funktionen zu so etwas führen :

%Vor%

Die entsprechende Geige wäre hier .

Sie sollten auch bemerken: Dies ist keine Funktion. Und mit Funktionen (ich meine, benutzerdefiniert mit CREATE FUNCTION Aussage) Es ist unmöglich, eine Ergebniszeile zu setzen, da die Funktion in MySQL die Ergebnismenge per Definition nicht zurückgeben kann. Es ist jedoch nicht richtig zu sagen, dass es absolut unmöglich ist, die angeforderte Transformation mit MySQL durchzuführen.

Aber denken Sie daran: Wenn Sie etwas tun können, heißt das nicht, dass Sie es tun sollten.

    
Alma Do 08.12.2014, 20:34
quelle

Tags und Links