Onjuiste syntaxis bij ”

Ik probeer de volgende vrij eenvoudige query uit te voeren in SQL Server Management Studio:

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

Dit lijkt helemaal correct, maar ik krijg steeds de volgende foutmelding:

Bericht 102, niveau 15, staat 1, regel 6
Onjuiste syntaxis bij ”.

Het werkt als ik de join verwijder en alleen een simpele selectie doe:

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

Maar ik heb de join nodig om te werken. Ik heb niet eens hebbende string ” in deze zoekopdracht, dus ik kan niet achterhalen wat het niet leuk vindt.


Antwoord 1, autoriteit 100%

Zulke onverwachte problemen kunnen optreden wanneer u de code van een webpagina of e-mail kopieert en de tekst niet-afdrukbare tekens bevat, zoals individuele CR of LF en vaste spaties.


Antwoord 2, autoriteit 20%

Panagiotis Kanavos heeft gelijk, soms kan T-SQL kopiëren en plakken ongewenste tekens laten verschijnen…

Ik heb eindelijk een eenvoudige en snelle manier gevonden (alleen Notepad++ nodig) om te detecteren welk teken fout is, zonder de hele instructie handmatig te hoeven herschrijven: het is niet nodig om een bestand op schijf op te slaan.

Het gaat vrij snel, in Notepad++:

  • Klik op “Nieuw bestand”
  • Controleer onder het menu “Encoding”: de waarde moet “Encode in UTF-8” zijn; stel het in als het niet is
  • Plak je tekst
  • Klik in het coderingsmenu nu op “Coderen in ANSI” en controleer uw tekst opnieuw

Je zou gemakkelijk de verkeerde letter(s) moeten vinden


Antwoord 3, autoriteit 3%

De fout voor mij was dat ik de SQL-instructie uit een tekstbestand las en het tekstbestand werd opgeslagen in de UTF-8 met BOM-indeling (byte order mark).

Om dit op te lossen, opende ik het bestand in Notepad++ en koos onder Codering voor UTF-8. Als alternatief kunt u de eerste drie bytes van het bestand verwijderen met een hex-editor.


Antwoord 4, autoriteit 3%

Je kunt de codering die voor het bestand is gebruikt (in dit geval sql-bestand) identificeren met een editor (ik heb Visual Studio-code gebruikt). Zodra u het bestand opent, wordt de codering van het bestand weergegeven in de rechterbenedenhoek van de editor.

codering

Ik had dit probleem toen ik probeerde een bestand in te checken dat was gecodeerd UTF-BOM (afkomstig van een niet-windows-computer) waaraan speciale tekens waren toegevoegd aan afzonderlijke tekenreeksen

U kunt de codering van uw bestand als volgt wijzigen:

In de onderste balk van VSCode ziet u het label UTF-8 With BOM. Klik Het. Er wordt een pop-up geopend. Klik op Opslaan met codering. U kunt nu een nieuwe codering voor dat bestand kiezen (UTF-8)


Antwoord 5

Ik gebruikte ADO.NET en gebruikte SQL Command als:

string query =
"SELECT * " +
"FROM table_name" +
"Where id=@id";

het probleem was dat ik een spatie miste aan het einde van "FROM table_name"+
Dus eigenlijk stond er

string query = "SELECT * FROM table_nameWHERE id=@id";

en dit veroorzaakte de fout.

Hopelijk helpt het


Antwoord 6

Ik krijg deze fout omdat ik aliaskolommenin een DECLARE-instructieheb geplakt.

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 

FOUT:
Msg 102, niveau 15, staat 1, regel 2
Onjuiste syntaxis bij ‘.’.

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

GEEN FOUT

Other episodes