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
-
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.