patbone Geschrieben 15. Februar 2005 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 = ' % ')
Magoo Geschrieben 15. Februar 2005 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.
kingofbrain Geschrieben 15. Februar 2005 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
Darth_Zeus Geschrieben 15. Februar 2005 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
mme Geschrieben 15. Februar 2005 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%')
mme Geschrieben 15. Februar 2005 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?
patbone Geschrieben 15. Februar 2005 Autor 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 = ' % ')
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden