Unterschiedliche Wirkung von Platzhaltern in DB-Anweisung



  • Hallo alle zusammen,

    beim Zugriff auf eine Datenbank (MS SQL Server) aus MFC heraus, ist mir etwas "unerklärliches" aufgefallen:

    Wenn ich ein Sternchen (*) als Platzhalter verwende, kommt bei einer SELECT-Anweisung ein anderes Ergebnis heraus als bei einer INSERT-Anweisung:

    strSQL = _T("SELECT * FROM Tabelle WHERE Name LIKE '*'");
    GetGlobalDatabase()->ExecuteSQL(strSQL);
    
    strSQL = _T("INSERT INTO Tabelle2 SELECT * FROM Tabelle WHERE Name LIKE '*'");
    GetGlobalDatabase()->ExecuteSQL(strSQL);
    

    Bei der Select-Anweisung werden mehrere Datensätze gefunden (und im Programm angezeigt).
    Bei der Insert-Anweisung werden hingegen (bei gleichem Datenmaterial) keine Datensätze hinzugefügt.

    Auch wenn ich das Problem mit dem Prozentzeichen (%) umgangen habe, wäre ich für eine Erklärung (Beseitigung des Brettes vor meinem Kopf) sehr dankbar.

    Eine schöne Restwoche noch,

    Korhil


  • Mod

    1. Ist der Stern '*' für den SQL Server im LIKE ein "normales" Zeichen.
    2. Kann ich Deine Aussage in einer kleinen Test-DB auf dem SQL Server 2008 R2 nicht nachvollziehen.



  • Danke für die schnelle Rückmeldung,

    habe mir die ganze Sache nochmals angesehen und meinen Fehler entdeckt, das '*' hat nur mich geblendet, in der Select-Anweisung war noch eine Or-Bedingung, die für Treffer gesorgt hat.

    Und ich hatte mich schon gewundert, darum das nur in meinem Programm so passiert.


Anmelden zum Antworten