Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql “”附近的语法不正确_Sql_Sql Server_Ssms - Fatal编程技术网

Sql “”附近的语法不正确

Sql “”附近的语法不正确,sql,sql-server,ssms,Sql,Sql Server,Ssms,我正在尝试在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 这似乎完全正确,但我一直得到以下错误: Msg 102,15级,状态1,第6行 附近的语法不正确 如果我取出连接

我正在尝试在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
这似乎完全正确,但我一直得到以下错误:

Msg 102,15级,状态1,第6行 附近的语法不正确

如果我取出连接并仅执行一个简单的选择,则它会起作用:

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

但我需要加入工作。我甚至没有这个查询中的字符串,所以我无法找出它不喜欢什么

当您从网页或电子邮件复制代码时,如果文本包含不可打印的字符,如单个CR或LF和非间断空格,则可能会出现此类意外问题。

我的错误是,我从文本文件读取SQL语句,而文本文件以UTF-8格式保存,采用BOM字节顺序标记格式


为了解决这个问题,我用Notepad++打开了文件,并在编码下选择了UTF-8。或者,您可以使用十六进制编辑器删除文件的前三个字节。

Panagiotis Kanavos是正确的,有时复制和粘贴T-SQL会使出现不需要的字符

我终于找到了一种简单而快速的方法,只需要Notepad++就可以检测出哪个字符是错的,而不需要手动重写整个语句:不需要将任何文件保存到磁盘

在记事本++中,速度非常快:

单击新建文件 在编码菜单下检查:该值应以UTF-8编码;如果不是,就设置它 粘贴文本 从“编码”菜单中,现在单击ANSI中的“编码”并再次检查文本
您应该很容易找到错误的字符

我在使用ADO.NET时使用的SQL命令如下:

 string query =
"SELECT * " +
"FROM table_name" +
"Where id=@id";
问题是,我在表名末尾漏掉了一个空格+ 所以基本上它说

string query = "SELECT * FROM table_nameWHERE id=@id";
这就是导致错误的原因


希望对您有所帮助

我之所以出现此错误,是因为我将alias列粘贴到了DECLARE语句中

错误: Msg 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

无错误

在本例中,您可以使用我使用的Visual studio代码编辑器识别用于文件的编码sql文件。打开文件后,它会在编辑器的右下角显示文件的编码

我在尝试签入一个文件时遇到了这个问题,该文件是由一个非windows机器生成的UTF-BOM编码的,该机器在单个字符串字符后附加了特殊字符

您可以按如下方式更改文件的编码:


在VSCode的底部栏中,您将看到带有BOM的标签UTF-8。点击它。弹出窗口打开。单击“使用编码保存”。现在,您可以为该文件UTF-8选择一种新的编码

哪个版本的SQL Server?对我来说可以正常工作-SQL Server 2012 Developer Edition这对我来说非常有效。它在上也没有引起任何问题。您是否从某个地方复制了查询?第六行是什么?我敢打赌有一个不可打印的字符,可能是一个CR或LF导致了这个问题,在SQL 2008上对我很好,就是这样。我手动删除了所有的空白,并重新添加了空格,现在它可以工作了。复制粘贴到记事本中也会显示这些特殊字符。使移除它们更容易。不总是这样。关于字符串拆分,至少有一个这样的问题,问题是由单个Unicode字符引起的,该字符以逗号后跟空格的形式出现。是的,我的字符在这行的末尾,在记事本中仍然不可见。但按delete键还是行得通的,对我来说就是这样。。UTF-8和LF修复了错误。谢谢Guys@SteveB我该怎么去it@user123456你怎么得到什么?记事本++是你可以下载的东西。非常感谢。你的解决办法很容易就揭示了我痛苦的根源。一个注意事项是,在我的记事本++版本中,一些奇怪的字符变成了简单的问号。所以我只是在寻找?并删除了我在陌生地方发现的所有内容。再次感谢。@PerryTew可能是因为菜单中设置了不同的编码?
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