/ / Finden Sie eine Liste von Wörtern (durch Komma getrennte Zahl), die in einer textbasierten Spalte in der MySQL-Datenbank vorhanden sind - php, mysql, sql, database, mysqli

Suchen Sie eine Liste von Wörtern (durch Komma getrennte Zahlen), die in einer textbasierten Spalte in der MySQL-Datenbank vorhanden sind - php, mysql, sql, database, mysqli

Ich benutze PHP / MySQL.
Ich speichere Komma-getrennte 6-stellige Zahlen in einer textbasierten Tabellenspalte in der Datenbank.

Ich möchte die Methode erhalten, um herauszufinden, welche Zahlen in einem gegebenen Bereich in meiner Datenbank vorhanden sind.

Mein Tisch sieht so aus:

 |id|date|commaSeperatedList|

Als Eingabe für sql möchte ich nun eine Reihe von Nummern angeben (z. B. 234101-234200).

Daher erwarte ich Output in Form von:

  |id|date|number|

So weit, die Lösung, an der ich gearbeitet habe, ist: Verwendung der Bereichsfunktion von PHP.

Mit diesem habe ich eine String Long Where Clause erstellt.

     foreach( $words as $word) {
$word=str_pad($word, 6, "0", STR_PAD_LEFT);
$whereClause .= " commaSeperatedList LIKE "%" . $word . "%" OR";
}

Das Problem damit ist, dass ich nicht genau weiß, welche der häufig vorkommenden Zahlen gefunden wurden.

Nehmen wir an, die Liste hat z. 109001,234122,234123,345650

Ich gebe den Bereich (234101-234200)

Die obige Anweisung findet alle Zeilen, die eine beliebige Zahl im angegebenen Bereich enthalten. Ich möchte aber auch wissen, welche genauen Zahlen übereinstimmen. In meinem Beispiel sind diese Nummern: 234122,234123

Die erwartete Ausgabe sollte also lauten:

   |1|date|234122|
|1|date|234123|

Jede Hilfe in dieser Hinsicht wird geschätzt.

Antworten:

0 für die Antwort № 1

Schließlich mussten Daten durch Normalisierung gespeichert werden. Es gibt Abfragen (Full Text Match), die die Arbeit verrichten, aber nicht nur sie waren komplex, sondern auch langsam.

Für mich ist es immer besser, Daten im normalisierten Format richtig zu speichern. (Es ist kein Leerzeichen / Zeit-TradeOFF).

Für andere in ähnlicher Situation. Machen Sie etwas mehr Arbeit an Daten und speichern Sie sie ordnungsgemäß. Danke an alle für wertvolle Antworten!


-1 für die Antwort № 2

Versuchen Sie diesen Code, der Ihnen helfen kann, zwischen den Bereichen zu finden

<?php
$list = "109001,234122,234123,345650";
$from = "234101";
$to = "234200";
$list = explode(",",$list);
foreach($list as $val)
{
if($val > $from && $val < $to)
{
echo $val."<br>";
}
}
?>