web-dev-qa-db-ja.com

付近の構文が正しくありません

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

これは完全に正しいように見えますが、次のエラーが発生し続けます。

メッセージ102、レベル15、状態1、行6
「」付近の構文が正しくありません。

結合を取り出して、単純な選択のみを行うと機能します:

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

しかし、私は働くために参加が必要です。私もhaveこのクエリの文字列 ''ではないので、何が気に入らないのかわかりません。

31
Joshua Frank

このような予期しない問題は、Webページまたは電子メールからコードをコピーし、テキストに個々のCRやLFなどの印刷できない文字と改行しないスペースが含まれている場合に発生する可能性があります。

72

Panagiotis Kanavosは正しいです。T-SQLをコピーして貼り付けると、不要な文字が表示されることがあります...

最終的に、文全体を手動で書き換える必要なく、どの文字が間違っているかを検出するためのシンプルで高速な方法(Notepad ++のみが必要)を見つけました。ファイルをディスクに保存する必要はありません。

Notepad ++では、非常に簡単です。

  • [新しいファイル]をクリックします
  • メニューの「エンコード」で確認します。値は「UTF-8でエンコード」である必要があります。そうでない場合は設定してください
  • テキストを貼り付けます enter image description here
  • [エンコード]メニューから[ANSIでエンコード]をクリックして、テキストをもう一度確認してください enter image description here

間違った文字を簡単に見つけるはずです

2
MAXE

私にとってのエラーは、SQLファイルをテキストファイルから読み取り、テキストファイルがBOM(バイトオーダーマーク)形式のUTF-8で保存されたことです。

これを解決するために、Notepad ++でファイルを開き、エンコードの下でUTF-8を選択しました。または、16進エディタでファイルの最初の3バイトを削除できます。

1
K48

私はADO.NETを使用し、SQLコマンドを次のように使用していました。

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

事は私が"FROM table_name"+の終わりに空白を逃したことだったので、基本的にそれは言った

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

これがエラーの原因でした。

それが役に立てば幸い

0
Buttman

alias columnsDECLAREステートメントに貼り付けたため、このエラーが発生しました。

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 

エラー:メッセージ102、レベル15、状態1、行2 '。'付近の構文が正しくありません。

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

エラーなし

0
Daniel T