mssql: Query erkennt String mit Bindestrich nicht (SQLServer 2008)

Wer ich oder Nord Süd?

Hab alles mit Allem kombiniert. Also deine Vorschläge mit "=" und "LIKE"
mach mal bitte ein select * from st und poste was du da hast

Was willst du denn sehen.

Hab ne tabelle mit 115 Spalten und 3826 Zeilen...

Oder versteh ich nicht richtig, was du meinst mit "und poste was du da hast"?

Wenn ich "trim" setze, kommt die Nachricht

"Msg 195, Level 15, State 10, Line 4
'Trim' is not a recognized built-in function name."
 
Achso du hast soviele einträge. Wollte ein paar in meine Tabelle geben zum Nachspielen.

Hmm naja MS SQL unterstützt kein Trim was mir aber nicht unbedingt einleuchtet aber ok. Muss es eine MS SQL Datenbank sein ?
 
Achso du hast soviele einträge. Wollte ein paar in meine Tabelle geben zum Nachspielen.

Hmm naja MS SQL unterstützt kein Trim was mir aber nicht unbedingt einleuchtet aber ok. Muss es eine MS SQL Datenbank sein ?

Guten Morgen,

Die meisten Einträge findet meine stinknormale Query ja. Ich hab auch andere Einträge mit Sonderzeichen, die werden alle wunderbar erkannt. Das ist ja das Kranke an der Sache.

Ja, es muss mssql sein. Das Projekt ist eigentlich fertig und nicht gerade ein kleiner Codeschnipsel. Außerdem hängen an der Datenbank auch noch andere Applikationen, die teilweise viel Geld gekostet haben. Also mal eben die DB wechseln ist nicht drin.

mfg,
David

EDIT:
Hab mal das Produkt umbenannt in der Datenbank und es wurde gefunden. Habs dann wieder auf den ursprünglichen Namen zurück gesetzt und es wird immer noch gefunden.Ich habe keinen Plan, was das jetzt soll. Ich habe folgende Theroie:

Das Produkt stand mit mehr als einem Leerzeichen in der Datenbank. Wenn man sich den Namen ausgeben läst, erscheint aber nur ein Leerzeichen (so etwas, wie ein automatisches Trim bei der Ausgabe.) Sucht man dann nach dem Proukt, mit nur einem Leerzeichen, dann gibt es kein Ergebnis zurück.

Problem gelöst, wenn's auch bedeutet, dass ich wohl die ganzen Produktnamen durchgehen und auf mehrere Leerzeichen durchsuchen muss.

mfg,
David

Schönes Wochenende
 
Zuletzt bearbeitet:
Nein musst du nicht genau hierfür gibt es im SQL Server LTRIM und RTRIM also wenn du Leerzeichen abschneiden willst dann benutze die.
Leider habe ich den Post zu spät gesehen sonst wärst du vermutlich früher am Ziel gewesen.
Zu den MySQL Usern die beklagen das es kein Trim gibt - dafür gibt es im MSSQL sogar 2 ( s.o.). Wenn man also weiß was man tut kommt man damit auch klar.
Grüsse Alex

PS: Solltest du auch mehrfache Leerzeichen zwischen den Texten haben wie hier dann ersetzte einfach mit REPLACE ( SPALTE, " ". " ") bis es passt
 
Nein musst du nicht genau hierfür gibt es im SQL Server LTRIM und RTRIM also wenn du Leerzeichen abschneiden willst dann benutze die.
Leider habe ich den Post zu spät gesehen sonst wärst du vermutlich früher am Ziel gewesen.
Zu den MySQL Usern die beklagen das es kein Trim gibt - dafür gibt es im MSSQL sogar 2 ( s.o.). Wenn man also weiß was man tut kommt man damit auch klar.
Grüsse Alex

PS: Solltest du auch mehrfache Leerzeichen zwischen den Texten haben wie hier dann ersetzte einfach mit REPLACE ( SPALTE, " ". " ") bis es passt

Hallo

aber RTRIM und LTRIM wird im nichst helfen wenn das Leerzeichen irgendwo in der Mitte ist oder ? das schneidet doch nur die Leerzeichen am ende und anfang ab. Habe ich ja schon mal ein Paar Post vorher geschrieben er soll das benutzen.

Das Replace wäre noch eine idee.

Generell ist zu sagen das ein Vergleich von Strings immer Blöd ist (ich versuche das immer zu vermeiden) da wie du siehst ein leerzeichen deine Abfrage schon scheitern lassen kann.

lg
 
Zuletzt bearbeitet:
Nein musst du nicht genau hierfür gibt es im SQL Server LTRIM und RTRIM also wenn du Leerzeichen abschneiden willst dann benutze die.
Leider habe ich den Post zu spät gesehen sonst wärst du vermutlich früher am Ziel gewesen.
Zu den MySQL Usern die beklagen das es kein Trim gibt - dafür gibt es im MSSQL sogar 2 ( s.o.). Wenn man also weiß was man tut kommt man damit auch klar.
Grüsse Alex

PS: Solltest du auch mehrfache Leerzeichen zwischen den Texten haben wie hier dann ersetzte einfach mit REPLACE ( SPALTE, " ". " ") bis es passt

Hallo,
danke für deine Hilfe.

LTRIM und RTRIM hatte ich ja schon zusammengelegt. Aber wie du richtig erkannt hast, was mein Problem ja bei den Leerzeichen zwischen den Elementen meines Tabelleneintrags.

Wunderbar, mit replace kann ich dann also einfach lustig Leerzeichen entfernen.

Ich habe mal gegoolget, nach einer Möglichkeit meine Leerzeichen nicht direkt zu löschen, sondern sie einfach bei meiner Abfrage nicht zu bercksichtigen.

Das müsste meiner Meinung nach ungefähr so gehen:

select REPLACE (ref, ' ', ' ') from st where ref = 'Bomba calor geotermica IS-SW 29 (sem arrefecimento)'

Das klappt aber nicht. Ich bekomme die Nachricht:
Kein Spaltenname

Hsat du da nen schnellen Tipp für mich?

mfg,
DAvid
 
Hallo,
danke für deine Hilfe.

LTRIM und RTRIM hatte ich ja schon zusammengelegt. Aber wie du richtig erkannt hast, was mein Problem ja bei den Leerzeichen zwischen den Elementen meines Tabelleneintrags.

Wunderbar, mit replace kann ich dann also einfach lustig Leerzeichen entfernen.

Ich habe mal gegoolget, nach einer Möglichkeit meine Leerzeichen nicht direkt zu löschen, sondern sie einfach bei meiner Abfrage nicht zu bercksichtigen.

Das müsste meiner Meinung nach ungefähr so gehen:

select REPLACE (ref, ' ', ' ') from st where ref = 'Bomba calor geotermica IS-SW 29 (sem arrefecimento)'

Das klappt aber nicht. Ich bekomme die Nachricht:
Kein Spaltenname

Hsat du da nen schnellen Tipp für mich?

mfg,
DAvid

Ähmm nur zur info ich habe dir das mit den Leerzeichen schon vorher mal gesagt !

Hallo,

Versuche es mal Mit upper()

Code:

select ref from st where Upper(design) = upper('ACOPLE TORRES 3000 -PUNTERA-' );

vll geht es so ?

du musst auch aupassen wenn du nur ein leerzeichen mehr in deiner Anbfrage hast als in deiner Tabelle, kommt da auch nichts zurück


Das könntest du aber mit TRIM() umgehen.

lg
 
Zurück