Ich bin neugierig, gibt es eine gute Möglichkeit, alle Spalten nach einem bestimmten Wert zu durchsuchen? Für meine Zwecke muss es überhaupt nicht schnell sein, es ist nur eine einmalige Sache, und ich möchte nicht wirklich jeden Feldnamen eingeben müssen. Genau das werde ich jetzt tun, aber ich denke, es gibt sicherlich einen besseren Weg.
Ich möchte dies umdrehen:
SELECT * FROM table WHERE col1 = 'val' OR col2 = 'val' OR col3 = 'val';
das mögen:
SELECT * FROM table WHERE * = 'val'
... oder noch besser (obwohl ich es ernsthaft bezweifle ...)
SELECT * FROM table WHERE * like '%val%'
Ich fand das , was scheint irgendwie-nicht-ganz in der Nähe, aber ich finde nichts näher:
SELECT whatever WHERE col1,col2 IN ((val1, val2), (val1, val2), ...)
Der Unterschied besteht darin, dass eine Auswahl von Spalten nach den angegebenen Werten durchsucht wird, während ich versuche, ALLE Spalten nach einem einzelnen Wert zu durchsuchen.
Es ist jedoch nicht wichtig, wie ich mehr als alles andere sagte, ich bin nur neugierig
Je näher Sie kommen können, desto folgender ist Folgendes
IN
:Sie müssen noch alle Spalten schreiben, die Sie überprüfen möchten.
Und es ist nicht anders als der
OR
Ausdruck, den Sie haben, weder in der Leistung noch auf andere Weise. Dies ist nur eine andere, äquivalente Art, den Ausdruck mit etwas weniger Zeichen zu schreiben.quelle
Sie müssen dies in zwei Schritten tun. Generieren Sie zuerst die SQL-Datei (vorausgesetzt, Ihre Tabelle heißt im Schema S T:
Jetzt können Sie diese Zeichenfolge ausführen. Beachten Sie, dass Sie das 'a' mit extra 'zitieren müssen. Wenn Sie dies beispielsweise in eine Prozedur einfügen, können Sie die generierte Zeichenfolge vorbereiten und ausführen.
Ich habe getestet mit:
Die Abfrage wurde generiert, wo:
und das Ausführen führt zu:
quelle
Es fühlt sich an, als wäre es ein Jahr her, seit ich das gefragt habe, aber ich bin nur auf das gestoßen, was genau das zu sein scheint, wonach ich gesucht habe! Es ist keine SQL-Anweisung, wie ich es erwartet hatte, aber sie macht das, was ich wollte.
In MySQL Workbench können Sie mit der rechten Maustaste auf die Tabelle oder das Schema klicken und Tabellendaten durchsuchen auswählen.
quelle
Probier diese:
Dies setzt voraus, dass
.
Ihre Suchzeichenfolge keine enthält . Wenn Sie dies nicht garantieren können, können Sie möglicherweise ein anderes "Trennzeichen" verwenden.quelle
%
oder_
oder eine Spalte enthält.
Die einfachste Lösung ist zu tun
Es sei denn, der Wert ist etwas, das in der SQL-Syntax häufig vorkommt.
quelle
Versuche dies.
CONCAT () wird verwendet, um Spaltenwerte wie hier zu trennen. Sie können Ihre Spalte durch Leerzeichen trennen, um das bessere Ergebnis innerhalb der Funktion anzugeben, und überprüfen, ob der Wert auch durch Leerzeichen getrennt ist, und das Ergebnis liegt in Ihrer Hand.
quelle
Mithilfe der Datenbank information_schema können wir im Grunde nur alle Spalten einer bestimmten Tabelle auflisten und sie dann mit GROUP_CONCAT als eine Zeile auflisten und dann in eine IN-Anweisung einspeisen.
Dies gibt nur dann eine Zeile zurück, wenn 'value' in allen Spalten vorhanden ist.
quelle
if 'value' is present in any of the columns
? Außerdem können Sie ein Prädikat für Zeichenfolgentypen wie "und DATA_TYPE IN (" char "," varchar ")" hinzufügenwhere 'value' in ('col1,col2,col3…')
.