【问题标题】:T-SQL insert into doesn't recognize a table name [closed]T-SQL插入无法识别表名[关闭]
【发布时间】:2020-01-17 11:44:16
【问题描述】:

以下代码不起作用:

    INSERT INTO [dbo].[Customers]
           ([CustName]
           ,[CustSurname]
           ,[City])
       VALUES
           ("Joe", "Dassen", "London")

表肯定存在,列名肯定正确。

但是,所有对象引用都带有红色下划线。指向光标显示:“无效的对象名称客户”为表名,“无效的列名 CustName”为 [CustName] 等等。

运行代码会产生错误,但错误不同:

Msg 207, Level 16, State 1, Line 19
Invalid column name 'Joe'.
Msg 207, Level 16, State 1, Line 19
Invalid column name 'Dassen'.
Msg 207, Level 16, State 1, Line 19
Invalid column name 'London'.

我使用 SQL Server 2017 Express 版本和最新的 SSMS。

【问题讨论】:

  • T-SQL 中的字符串值仅用单引号引起来。双引号用于标识符。

标签: sql-server sql-insert


【解决方案1】:

应该如下:你在double quote中传递值它应该在single quote中。

INSERT INTO [dbo].[Customers]
           ([CustName]
           ,[CustSurname]
           ,[City])
       VALUES
           ('Joe', 'Dassen', 'London')

如果你想插入像Jo'e 这样的值,那么你需要传递两次单引号作为'' 而不是双引号。所以,应该是Jo''e

【讨论】:

    【解决方案2】:

    您的查询应如下所示:

    INSERT INTO [dbo].[Customers]
               ([CustName]
               ,[CustSurname]
               ,[City])
           VALUES
               ('Joe', 'Dassen', 'London')
    

    双引号用于标识符,但字符串值必须用单引号引起来。 所以不要使用双引号,只需用单引号替换它们即可。How do I use single quotes in SQL query?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-19
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-23
      相关资源
      最近更新 更多