首页 > 解决方案 > 得到错误不正确的语法我做错了什么

问题描述

我从这段代码中得到一个错误:

DECLARE @New_Hospitalstaff TABLE 
        (
            [NAME] VARCHAR(50),
            JOB VARCHAR(50), 
            HIREDATE DATETIME,
            CITY VARCHAR(50),
            [STATE] VARCHAR(50)
        )

INSERT INTO @New_Hospitalstaff (NAME, JOB, HIREDATE, CITY, STATE)
    SELECT 
        (SUBSTRING(Name, 1, (CHARINDEX('_', Name) - 1,))), AS Name
        (SUBSTRING(JoB, (CHARINDEX('_'job) + 1, 15)) AS JobHireDate,
        (SUBSTRING(Location, 1, (CHARINDEX('_', Location) - 1))) AS City
        (SUBSTRING(Location, CHARINDEX('_', Location) + 1, 10)) AS State 
    FROM 
        DBO.HospitalStaff

SELECT *
FROM @New_Hospitalstaff

标签: sql

解决方案


您会遇到很多语法错误。我认为格式化您的代码并更加注意括号会对您有所帮助。看看这个并与你的比较。

DECLARE @New_Hospitalstaff TABLE ( [NAME] varchar(50) , [JOB] varchar(50) , [HIREDATE] datetime , 
                                   [CITY] varchar(50) , [STATE] varchar(50) )

INSERT INTO @New_Hospitalstaff(NAME,JOB,HIREDATE,CITY,STATE ) 
SELECT (SUBSTRING(Name,1, (CHARINDEX('',Name)-1))) AS Name, 
       -- Missing [JOB] field in query. Needed in order for INSERT to work. 
       -- You probably want the whole field so: JOB, 
       (SUBSTRING(JOB, (CHARINDEX('', job)+1),15)) AS JobHireDate, 
       (SUBSTRING(Location,1, (CHARINDEX('',Location)-1))) As City,
       (SUBSTRING(Location, CHARINDEX('',Location)+1,10)) As State
FROM DBO.HospitalStaff 

SELECT * FROM @New_Hospitalstaff

我根据被调用的函数修复了不合适的逗号、缺少括号和额外的括号。


推荐阅读