Announcement

Collapse
No announcement yet.

Groß Buchstabe am Anfang oder Leerzeichen in einer Spalte

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Groß Buchstabe am Anfang oder Leerzeichen in einer Spalte

    Hallo

    Ich möchte zur Kontrolle von Eingaben in eine Datenbank mir kleine SQL Tools schreiben. Bei dem Datenbanksystem handelt es sich um den SQL Server 2000 und 2005.
    Ich möchte jetzt zum Beispiel schauen ob das erste Zeichen in einer Spalte ein groß geschriebener Buchstabe ist. Wenn nicht dann soll er mir den Datensatz ausgeben.

    Select Nummer, Name
    From Tabelle
    Wehre Name not Like ( * )

    Nur was muss ich für den Stern schreiben?
    Möchte damit abfangen wenn zum Beispiel „ Meier“ drin steht. Da ich bei solchen Eingaben Probleme mit der XML Ausgabe unserer Betriebssoftware bekomme.
    Desweiteren möchte ich dasselbe mit den Postleitzahlen und schauen ob in einer Spalte ein Leerzeichen vorkommt. Es wäre schön wenn Ihr mir bitte auch für die letzten beiden ein Code Beispiel geben könntet.

    Danke für Eure Hilfe
    Stefan

  • #2
    Hallo,

    das folgende Beispiel demonstriert einen möglichen Lösungsweg:

    [highlight=SQL]
    USE tempdb
    GO

    CREATE TABLE dbo.TestTbl
    (
    id INT NOT NULL IDENTITY PRIMARY KEY,
    plz VARCHAR(5) NOT NULL,
    name VARCHAR(9) NOT NULL
    )
    GO
    INSERT INTO dbo.TestTbl (plz,name) VALUES ('12345','Test1');
    INSERT INTO dbo.TestTbl (plz,name) VALUES (' 2345','Test2');
    INSERT INTO dbo.TestTbl (plz,name) VALUES ('1234 ','Test3');
    INSERT INTO dbo.TestTbl (plz,name) VALUES (' 2 45','Test4');
    INSERT INTO dbo.TestTbl (plz,name) VALUES ('12345','test5');
    INSERT INTO dbo.TestTbl (plz,name) VALUES ('12345',' test6');
    GO
    -- Leerzeichen in der Spalte PLZ suchen
    SELECT * FROM dbo.TestTbl
    WHERE plz LIKE ' %' OR plz LIKE '% '
    -- Einträge suchen, die nicht mit einem Großbuchstaben beginnen
    SELECT * FROM dbo.TestTbl
    WHERE (ASCII(LEFT(name, 1)) > 90) OR (name LIKE ' %');
    [/highlight]

    Comment


    • #3
      Hallo Andreas

      Danke für Deine schnelle Hilfe. Du hast mir sehr weiter geholfen. Den SQl Code verstehe ich auch sehr gut. Nur kannst Du mir die letzte Zeile bitte noch mal etwas genauer erläutern?

      WHERE (ASCII(LEFT(name, 1)) > 90) OR (name LIKE ' %');

      Danke Stefan

      Comment


      • #4
        Hallo,

        die LIKE-Abfrage prüft, ob das 1. Zeichen ein Leerzeichen ist. Die LEFT-Funktion kopiert das 1. Zeichen des Eintrags in der Spalte name, danach wandelt die ASCII-Funktion den kopierten Buchstaben in das numerische Gegenstück der Position in der Zeichentabelle um.

        Der folgende Test macht deutlich, woher die Zahl 90 kommt:
        [highlight=SQL]
        SELECT ASCII('Z')
        SELECT ASCII('a')
        [/highlight]

        Comment


        • #5
          Danke. Es hat mir sehr geholfen. Das Problem ist gelöst. Danke

          Gruß Stefan

          Comment

          Working...
          X