patbone Geschrieben 15. Februar 2005 Teilen Geschrieben 15. Februar 2005 Hallo, ich habe folgendes Problem, ich muss in einem Programm einen Select ausführen und Startwerte im Programm sind like '%'. Das klappt wunderbar bei varchar-Felder, aber leider nicht bei INT-Feldern. Gibt es bei einem INT-Feld ein Wildcard-Operator?? Wenn nicht wie macht man das dann?? HILFE.......!? Anbei der Select. Gruss Patbone SELECT TOP 100 PERCENT dbo.werk.w_id, dbo.werk.firma, dbo.werk.kostenstelle, dbo.personal.nachname, dbo.personal.vorname, dbo.personal.p_id, dbo.hersteller.hersteller, dbo.modell.modell, dbo.hardware.seriennummer_imei, dbo.hardware.telefonnummer, dbo.hardware.mac_adresse, dbo.kategorie.kategorie FROM dbo.hardware INNER JOIN dbo.modell ON dbo.hardware.m_id = dbo.modell.m_id INNER JOIN dbo.hersteller ON dbo.modell.h_id = dbo.hersteller.h_id INNER JOIN dbo.kategorie ON dbo.modell.k_id = dbo.kategorie.k_id INNER JOIN dbo.personal ON dbo.hardware.p_id = dbo.personal.p_id INNER JOIN dbo.werk ON dbo.personal.w_id = dbo.werk.w_id WHERE (dbo.hersteller.hersteller = ' % ') AND (dbo.werk.kostenstelle = ' % ') AND (dbo.kategorie.kategorie = ' % ') AND (dbo.personal.nachname = ' % ') AND (dbo.personal.vorname = ' % ') AND (dbo.modell.modell = ' % ') AND (dbo.hardware.seriennummer_imei = ' % ') AND (dbo.werk.w_id = ' % ') AND (dbo.personal.p_id = ' % ') Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Magoo Geschrieben 15. Februar 2005 Teilen Geschrieben 15. Februar 2005 Irgendwie verstehe ich noch nicht so recht, was du mit deiner Abfrage bezwecken möchtest (vielleicht noch zu früh :confused: ), aber bei den anderen Feldern selektierst du ja die Datensätze, wo bestimmte Felder mit einem Leerzeichen beginnen und mit einem Leerzeichen enden. Wenn du jetzt sowas bei INT machen möchtest, hast du wohl "verloren", denn bei INT-Feldern wird nun mal wirklich nur die Zahl abgespeichert und sonst nichts. Wenn ich dich jetzt falsch verstanden habe, dann erläutere dein Problem noch mal etwas genauer. Zum Beispiel weshalb du bei INT ein Wildcard benutzen möchtest. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 15. Februar 2005 Teilen Geschrieben 15. Februar 2005 Servus, wie Magoo schon sagte, ein Wildcard bei Int macht keinen Sinn. Wie ähnlich soll der Int-Wert denn Deinem Int sein? Du kannst mit Vergleichsoperatoren <, >, <=, >= arbeiten. Die sollten doch ausreichen. Wenn Du ein suboptimales Datenmodell hast und in den Int-Werten Werte gespeichert hast, die eigentlich keine Ints sind (z.B. Postleitzahlen), dann kannst Du Dir 1. auf die Stirn hauen und es beim nächsten Mal besser machen. 2. Mit einer convert-Funktion Deines DBMS arbeiten und Dein "Int" in ein char oder varchar umwandeln und bei diesem dann mit Wildcard arbeiten. Peter Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Darth_Zeus Geschrieben 15. Februar 2005 Teilen Geschrieben 15. Februar 2005 spontan, ohne es auszuprobieren: WHERE (bla) AND (bla) AND IntegerFeld between (0 and (select max(IntegerFeld) from dazugehörige Tabelle) ) Wie gesagt, ohne Gewähr Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mme Geschrieben 15. Februar 2005 Teilen Geschrieben 15. Februar 2005 Um welches DBMS handelt es sich? Aber spontan fällt mir ein einfach zu wandeln und dann like zu benutzen... (vielleicht nicht die schnellste Abfrage dann aber je nach DBMS gibts evt. noch andere Lösungen...) to_char(spalte) like ('12%') Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mme Geschrieben 15. Februar 2005 Teilen Geschrieben 15. Februar 2005 Jetzt sehe ich erst dein "dbo." Dann ist es wohl ein MSSQL-Server!? Gibt es da nicht sowas wie Fragezeichen? In Access kann man doch z.B. Fragezeichen benutzen um in Zahlen eine Stelle als Wildcard zu nehmen, geht das dann nicht auch unter SQL? Das mit dem to_char wird da dann wohl nicht funktionieren(?) oder gibt es diesen Befehl auch unter MSSQL? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
patbone Geschrieben 15. Februar 2005 Autor Teilen Geschrieben 15. Februar 2005 der Select ist aus dem C++-Programm, natürlich sind keine Leerzeichen bei '%'. War ne lange Nacht. Ich setze auf meinen Variablen (sql-WerkID)den Startwert auf '%' , somit suche ich, auch wenn in die EditFelder des Programmes nichts eingetragen wurde, nach allen Werten und nicht nach <LEER>. CString Wildcard="\%"; CString sql_werkID=\%"; CString sql_hersteller="\%"; ....WHERE (dbo.werk.w_id = ' % ') Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
patbone Geschrieben 15. Februar 2005 Autor Teilen Geschrieben 15. Februar 2005 achja, es ist MSSQL 2000 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.