web-dev-qa-db-de.com

Falsche Syntax in der Nähe ''

Ich versuche, die folgende recht einfache Abfrage in SQL Server Management Studio auszuführen:

SELECT TOP 1000 * 
FROM 
    master.sys.procedures as procs
left join 
    master.sys.parameters as params on procs.object_id = params.object_id

Das scheint völlig richtig zu sein, aber ich bekomme die folgende Fehlermeldung:

Meldung 102, Ebene 15, Status 1, Zeile 6
Falsche Syntax in der Nähe ''.

Es funktioniert, wenn ich den Join herausnehme und nur eine einfache Auswahl mache:

SELECT TOP 1000 *
FROM 
    master.sys.procedures as procs

Aber ich brauche den Join, um zu arbeiten. Ich habe nicht mal habe den String '' in dieser Abfrage, also kann ich nicht herausfinden, was ihm nicht gefällt. 

27
Joshua Frank

Solche unerwarteten Probleme können auftreten, wenn Sie den Code von einer Webseite oder E-Mail kopieren und der Text nicht druckbare Zeichen enthält, wie z. B. Einzel-CR oder LF und geschützte Leerzeichen.

66

Panagiotis Kanavos hat recht, manchmal kann das Kopieren und Einfügen von T-SQL unerwünschte Zeichen hervorrufen ...

Endlich habe ich einen einfachen und schnellen Weg gefunden (nur Notepad ++ erforderlich), um festzustellen, welches Zeichen falsch ist, ohne die ganze Aussage manuell neu schreiben zu müssen: Es ist nicht erforderlich, Dateien auf der Festplatte zu speichern.

In Notepad ++ ist es ziemlich schnell:

  • Klicken Sie auf "Neue Datei"
  • Überprüfen Sie unter dem Menü "Encoding": der Wert sollte "Encode in UTF-8" sein; Setze es wenn es nicht ist
  • Fügen Sie Ihren Text ein enter image description here
  • Klicken Sie im Menü "Codierung" auf "In ANSI codieren" und überprüfen Sie erneut Ihren Text enter image description here

Sie sollten leicht die falschen Zeichen finden

2
MAXE

Der Fehler für mich war, dass ich die SQL-Anweisung aus einer Textdatei las und die Textdatei im UTF-8-Format mit BOM-Format (Byte Order Mark) gespeichert wurde.

Um das Problem zu lösen, habe ich die Datei in Notepad ++ geöffnet und unter Encoding UTF-8 ausgewählt. Alternativ können Sie die ersten drei Bytes der Datei mit einem Hex-Editor entfernen.

0
K48

Ich habe ADO.NET verwendet und SQL Command verwendet als:

 string query =
"SELECT * " +
"FROM table_name" +
"Where [email protected]";

das ding war, dass ich am ende von "FROM table_name"+ ein whitespace verpasst habe

string query = "SELECT * FROM table_nameWHERE [email protected]";

und dies verursachte den Fehler.

Ich hoffe es hilft

0
Buttman

Ich habe diesen Fehler erhalten, weil ich Alias-Spalten in eine DECLARE-Anweisung eingefügt habe.

DECLARE @userdata TABLE(
f.TABLE_CATALOG nvarchar(100),
f.TABLE_NAME nvarchar(100),
f.COLUMN_NAME nvarchar(100),
p.COLUMN_NAME nvarchar(100)
)
SELECT * FROM @userdata 

ERROR: Meldung 102, Ebene 15, Status 1, Zeile 2 Falsche Syntax in der Nähe von '.'.

DECLARE @userdata TABLE(
f_TABLE_CATALOG nvarchar(100),
f_TABLE_NAME nvarchar(100),
f_COLUMN_NAME nvarchar(100),
p_COLUMN_NAME nvarchar(100)
)
SELECT * FROM @userdata

KEIN FEHLER

0
Daniel T