Dezember 05, 2021, 05:13:25

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


where like funktioniert nicht

Begonnen von shadock, Juni 27, 2010, 16:48:32

⏪ vorheriges - nächstes ⏩

shadock

Hallo.

Ich habe eine kleine Tabelle "tabNamen" mit den Spalten
"ID" int  "Name" nchar(1)   "Nachname" nchar(10)

mit folgenden Eintraegen.

1   Frank      Meier
2   Gerd              Meier
3   Udo              Meier
4   Walter      Mueller
5   Gerhard      Schmidt

Folgender select funktioniert
SELECT     *
FROM         tabNamen

Die Tabelle wird komplett ausgegeben.

Der folgende select gibt nur die Zeilen 1 bis 3 aus.
SELECT     *
FROM         tabNamen where Nachname = 'meier'

alles super.

Nun wollte ich ein "where like" ausprobieren was aber nicht funktioniert.
SELECT     *
FROM         tabNamen where Nachname like 'meier'

Es erfolgt keine Ausgabe.

Warum??

shadock

Hondo


shadock

Hallo Hondo,

habe mir den link angesehen was mich aber keinen deut weiter bringt.
Denke ich habe alles so gemacht wie bei dem link beschrieben.
Weist Du wo mein Fehler liegt oder nicht?

shadock

shadock

Habe es eben rausbekommen.

shadock

database

Darf man raten?

Leerzeichen vor dem Namen?

shadock

Nein. Mit einem Leezeichen geht es bei mir nicht.
Habe es so gemacht. %

SELECT     Nachname
FROM         tabNamen where Nachname  like  'meier%'

shadock

database

Hallo,

habe auch nicht gemeint, dass es mit einem Leerzeichenfunktionieren sollte - sondern ob etwa vor dem Namen ein Leerzeichen stand.

Mein Ansatz wäre eher gewesen die Where Klausel so zu schreiben:

where Nachname  like  "meier*"

da m. E. das %-Zeichen in Kombination mit LIKE beim SQL-Server angesiedelt wäre...

shadock

Hallo database,

mit where Nachname  like  "meier*" funktioniert es bei mir nicht.
Die Tabelle bleibt leer. Egal ob ich das * vor oder hinter meier setze.
Geht nur mit dem % Zeichen und auch nur wenn es hinter meier sitzt also so

SELECT     Nachname
FROM         tabNamen where Nachname   like  'meier%'

shadock

shadock

Hallo datebase,

Du hast recht. Habe mir meine Tabelle noch mal angesehen und festgestellt
das hinter jedem meier noch fünf leerstellen sind. Habe versucht die Leerstellen
weg zu bekommen aber das geht nicht. Wenn ich mir die Tabelle wieder mit
"Edit Top 200 Rows" ansehe sind die Leerstellen wieder da.

shadock

database

Juni 28, 2010, 14:53:11 #9 Letzte Bearbeitung: Juni 28, 2010, 14:57:44 von database
Hallo,

nochmal ....  du verwendest kein Access! Warum schreist du nicht sofort!

Edit Top 200 Rows kenne ich auch nur vom SQL-Server!

Zitatdas hinter jedem meier noch fünf leerstellen sind.
auch das kenne ich nicht von Access!

ZitatIch habe eine kleine Tabelle "tabNamen" mit den Spalten
"ID" int  "Name" nchar(1)   "Nachname" nchar(10)
ist ebenfalls SQL-Server....

somit ist auch klar woher die Leerstellen hinter meier kommen - char - Spalten behalten im Gegensatz zu varchar ihre einmal eingestellte Länge, nicht verwendete Zeichen werden NICHT abgeschnitten.
Mein Fehler war, dass ich die ersten 2 Zeilen von deinem Startposting nicht genau gelesen hatte.

Natürlich funktioniert es nur mit
Zitatwhere Nachname   like  'meier%'
der SQL-Server kennt den * nicht!

Folgendes:
Ändere den Feldnamen 'Name' in Vorname um Problemen mit reservierten Namen vorzubeugen und um die Leerzeichen weg zu bekommen ändere den Datentyp für die beiden Spalten Vorname und Nachname von nchar(10) auf varchar(25). Werden nicht alle Zeichen benötigt zwackt der SQL-Server die freibleibenden Stellen selbsständig ab un verschwendet somit keinen Speicherplatz.
Ausserdem entfallen auch weitere Probleme im Zusammenhang mit Leerzeichen vor und nach einer Zeichenfolge.

...oh Mann - und ich probier hier herum wie Hugo und zweifle schon an mir selbst ...   ;D

shadock

Hallo database,

tut mir leid das habe ich ganz vergessen zu erwähnen.
Habe hier im Forum -> Datenbanken -> MS SQL-Server gefunden und dachte das
wäre dann klar. Werde es das nächste mal dazuschreiben.
Das mit varchar funktioniert. Vielen Dank fuer Deine Hilfe.

shadock

database

Hallo shadock,

war bitte nicht als Kritik an dir gemeint!
Wie schon geschrieben - mein Fehler ... das mit dem gleich schreien war als Scherz gedacht! ;)

Alles OK - Greets
Peter

shadock