2016-06-06 12 views
0

Ist es möglich, die Verwendung von Back-Ticks `mit der Funktion substr() zu kombinieren? Ich habe Spaltennamen mit Bindestrich ‚-‘, die die Verwendung von Backticks erfordern abzufragen aber scheint, wie ich nicht so etwas wie tun:MySQL Query Spaltenname Teilstring

SELECT substr(`abc-def-ghi`,1,5) FROM tableName 

Wo das Ziel, alle Zeilen aus Spalten mit abc-d beginnen zu wählen ist. Leider ist das Ändern/Entfernen der Bindestriche keine Option.

Antwort

2

Sie können nicht tun, was Sie wollen, mit einer einfachen SQL-Anweisung. Wenn Sie abc-def-ghi verwenden, erhalten Sie den Wert der Spalte, nicht die Name.

Eine SQL-Anweisung SELECT gibt einen festen Satz von Spalten mit einem festen Satz von Namen zurück. Sie können auf diese Weise keine Namen auswählen.

Wenn Sie so etwas tun möchten, müssen Sie dynamisches SQL (prepare und exec) verwenden. Ich vermute jedoch, dass Sie möglicherweise ein schlechtes Datenmodell haben. Vielleicht möchten Sie eine andere Frage stellen, das Tabellenlayout anzeigen und fragen, ob das eine sinnvolle Datenstruktur für das ist, was Sie tun möchten.

+0

Danke für Ihre Antwort Gordon. Ich denke, ich muss "Spaltennamen ändern" schließlich zu einer Option machen. Mein Modell ist in der Tat nicht optimal, da mir bewusst ist, dass es besser wäre, die Zeilen als die Spalten abzufragen, allerdings bin ich durch die Begrenzung der Anzahl der Spalten eingeschränkt; Daher musste die höhere Dimension als Zeilen (höhere Grenze) und die andere Dimension als Spalten festgelegt werden. – dter