php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.01.2006, 17:57  
Gast
 
Beiträge: n/a
Standard Byteweiser Vergleich

Folgendes Problem:

Ich habe eine Tabelle die ungefähr so aussieht:

0036 | 5553
0036 | 556
0037 | 123
005 | 57

Die linke Spalte kann also (genau wie die rechte auch) unterschiedlich lange
Zahlenwerte enthalten.

Ich habe nun eine Zahl, die ich mit den Werten in der linken Spalte matchen möchte. Diese Zahl beginnt zum Beispiel mit 0036, kann aber ebenso auch mit 005 usw. beginnen. Ich habe also keine Informationen darüber, wie viele Stellen der zu matchenden Zahl in der linken Spalte vorkommen.

Nehmen wir nun an, ich möchte herausfinden, welcher der Einträge mit dem Anfang meiner Zahl matcht.
Das heißt, wenn es in der linken Spalte eine Zahl mit 00366 gibt und meine zu matchende Zahl ist
0036678971562, dann möchte ich als Ergebnis alle Zeilen erhalten, die in der linken Spalte den Wert 00366 haben. Die Zeilen mit 0036, sollen darin nicht auftauchen.

Meine Idee war die folgende: (als Beispiel die Zahl 0036 451)
Ich mache ein Binäres AND auf die einzelnen Stellen meiner zu matchenden Zahl und den Werten in Spalte 1.

Ich zerlege die einzelnen Stellen der zu matchenden Zahl in ihre binären Repräsentationen
aus: 0036451 wird also:
000 000 011 110 100 101 001
0 0 3 6 4 5 1

und matche dies mit den Werten aus Spalte 1
ergibt hier für den ersten Wert in Spalte 1 (mit Nullen aufgefüllt)
Wert:
000 000 011 110 000 000 000
0 0 3 6 0 0 0

Binäres AND über die einzelnen Stellen ergibt:
000 000 011 110 000 000 000
0 0 3 6 0 0 0

das ist GENAU die Information die ich brauche!

Nun die Fragen:
1. Kann ich das mit MySQL realisieren (Bitweises AND gibt es ja, aber es betrachtet 0036451, als ein Wert, was ich ja nicht wirklich brauche)
2. gibt es eine andere Möglichkeit diesen Match durchzuführen


Vielen Dank für Eure Hilfe

[Nachtrag]
Ich möchte das was der folgende Code macht, in MySQL umsetzen
Code:
$string  = '0036000';
$string2 = '0036451';

for($counter = 0; $counter < strlen($string); $counter++) {
   echo $string[$counter] & $string2[$counter];
}
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 20.01.2006, 18:18  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

MySQL:
Code:
WHERE spalte1 LIKE '00366%'
PHP:
Code:
substr($spalte1, 0, 5) == '00366'
Hab nur bis zur Hälfte gelesen, aber was du mit den danachfolgenden Teil beschreibst ist glaub ich Käse.

Edit:
$string bitweise ver-AND-en mit $string2, da käme bei mir
1000110010100000 ($string)
1000111001100011 ($string2)
1000110000100000 (Ergebnis, dezimal: 35872)
raus, was bezweckst du damit?
Zergling-new ist offline   Mit Zitat antworten
Alt 21.01.2006, 10:11  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Zergling
MySQL:
Code:
WHERE spalte1 LIKE '00366%'
PHP:
Code:
substr($spalte1, 0, 5) == '00366'
Hab nur bis zur Hälfte gelesen, aber was du mit den danachfolgenden Teil beschreibst ist glaub ich Käse.

Edit:
$string bitweise ver-AND-en mit $string2, da käme bei mir
1000110010100000 ($string)
1000111001100011 ($string2)
1000110000100000 (Ergebnis, dezimal: 35872)
raus, was bezweckst du damit?
Die Problematik ist aber die, dass ich nur weiß, dass meine zu matchende Zahl mit einem der Werte in Spalte 1 beginnt. Die Werte in Spalte 1 können aber alle unterschiedlich lang sein. Ich weiß also nicht, wie lang der Teil ist, den ich matchen möchte.

Vielleicht nochmal ein anderes Beispiel zum besseren Verständnis der Problematik:

Ich habe die Zahlen 00336839237271 und die 005683213522. Wie finde ich heraus, mit welchem Wert aus Spalte 1, diese beginnen?

Hättest Du den PHP-Code ausgeführt, dann würdest Du sehen, dass das Ergebnis 0036000 beträgt.

Gibt es vielleicht noch Ideen von Leuten, die nicht nur bis zur Hälfte gelesen haben?
  Mit Zitat antworten
Alt 21.01.2006, 13:03  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Zitat:
Zitat von nahpeps
Ich habe die Zahlen 00336839237271 und die 005683213522. Wie finde ich heraus, mit welchem Wert aus Spalte 1, diese beginnen?
Meinst du sowas?
Code:
WHERE spalte = LEFT(00336839237271, CHAR_LENGTH(spalte))
xabbuh ist offline   Mit Zitat antworten
Alt 23.01.2006, 07:52  
Gast
 
Beiträge: n/a
Standard

Perfekt, das war genau das was ich brauchte!!

Vielen Dank und viele Grüße
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Schleifen-Problem beim Vergleich von 2 Arrays Slappi PHP Tipps 2008 3 15.06.2008 19:30
passwort vergleich in Validierungs - class? rene.klatt PHP Tipps 2008 20 28.09.2007 15:35
Vergleich mit false? Anotherone PHP Tipps 2006 3 17.04.2006 20:42
Abfrage und vergleich aus 2 Datenbanken Unkaputtbar2 PHP Tipps 2006 4 09.02.2006 12:41
Abfrage und vergleich aus 2 Datenbanken Unkaputtbar2 Datenbanken 2 09.02.2006 12:10
Problem beim Vergleich ausgelesenen Daten(XML) mit strpos() PHP-Fortgeschrittene 2 25.01.2006 09:11
Probleme beim Vergleich mit if.. PHP Tipps 2007 8 31.10.2005 21:47
Falscher vergleich: mein PHP denkt unlogisch udn falsch Blank PHP Tipps 2005-2 3 28.07.2005 19:13
Shopsysteme Vergleich Beitragsarchiv 0 18.07.2005 12:10
vergleich mit heutigem tag...? Datenbanken 12 01.06.2005 08:49
Vergleich in einer .csv Datei PHP Tipps 2005 18 22.01.2005 19:07
[Erledigt] Was für ein Vergleich Off-Topic Diskussionen 40 17.01.2005 15:55
Problem mit Vergleich JeeZ PHP Tipps 2004 6 28.09.2004 17:27
Vergleich, ob ein Datum mit Uhrzeit vor anderem liegt PHP-Fortgeschrittene 2 14.09.2004 15:27
Vergleich von Usereingabe und Inhalten der DB Datenbanken 10 30.08.2004 10:02

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
byteweiser vergleich, byteweiser dateivergleich, byteweiser, byteweiser größenvergleich

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:07 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.