근처의 구문이 잘못됨
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와 같은 인쇄할 수 없는 문자와 공백이 포함된 경우 이러한 예상치 못한 문제가 발생할 수 있습니다.
파나요티스 카나보스의 말이 맞아요, 가끔 T-SQL을 복사해서 붙여넣기 하면 원치 않는 문자처럼 보일 수 있어요...
저는 마침내 전체 문을 수동으로 다시 작성할 필요 없이 어떤 문자가 잘못되었는지 감지할 수 있는 간단하고 빠른 방법(노트북++만 필요함)을 찾았습니다. 즉, 파일을 디스크에 저장할 필요가 없습니다.
메모장++에서는 매우 빠릅니다.
- 새 파일을 클릭합니다.
- "Encoding" 메뉴 아래에서 확인합니다. 값은 "UTF-8에서 인코딩"이어야 합니다. 그렇지 않으면 설정합니다.
- 텍스트 붙여넣기
- Encoding 메뉴에서 "Encoding in ANSI"를 클릭하고 텍스트를 다시 확인합니다.
잘못된 문자를 쉽게 찾아야 합니다.
편집기(Visual 스튜디오 코드 사용)를 사용하여 파일(이 경우 sql 파일)에 사용되는 인코딩을 식별할 수 있습니다.파일을 열면 편집기의 오른쪽 하단 모서리에 파일 인코딩이 표시됩니다.
개별 문자열 문자에 특수 문자가 추가된 UTF-BOM(윈도우즈가 아닌 컴퓨터에서 발생)로 인코딩된 파일을 체크인할 때 이 문제가 발생했습니다.
다음과 같이 파일의 인코딩을 변경할 수 있습니다.
VSCode의 아래쪽 막대에는 UTF-8 With BOM이라는 레이블이 표시됩니다.클릭합니다.팝업이 열립니다.인코딩으로 저장을 클릭합니다.이제 해당 파일에 대한 새 인코딩을 선택할 수 있습니다(UTF-8).
텍스트 파일에서 SQL 문을 읽었는데 텍스트 파일이 BOM(바이트 순서 표시) 형식으로 UTF-8로 저장된 것이 저의 실수였습니다.
이 문제를 해결하기 위해 메모장++에서 파일을 열고 인코딩에서 UTF-8을 선택했습니다. 또는 16진수 편집기로 파일의 처음 3바이트를 제거할 수 있습니다.
저는 ADO를 사용하고 있었습니다.NET은 SQL Command를 다음과 같이 사용했습니다.
string query =
"SELECT * " +
"FROM table_name" +
"Where id=@id";
문제는 내가 마지막에 공백을 놓쳤다는 것입니다."FROM table_name"+
그래서 기본적으로 그것은 말했습니다.
string query = "SELECT * FROM table_nameWHERE id=@id";
이것이 오류의 원인이 되었습니다.
도움이 되길 바랍니다.
별칭 열을 DELECT 문에 붙여 넣었기 때문에 이 오류가 발생했습니다.
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
오류: 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
오류 없음
나에게 있어서 나는 성명서의 한 인용구가 빠졌습니다.
하나: 잘된하나:"INSERT INTO Customers (CustomerNo, FirstName, MobileNo1, RelatedPersonMobileNo) VALUES ('John123', John', '1111111111', '1111111111)"
John' 및 '1111111111'에서 인용문 누락
1: 정답:"INSERT INTO Customers (CustomerNo, FirstName, MobileNo1, RelatedPersonMobileNo) VALUES ('John123', 'John', '1111111111', '1111111111')"
저는 [dbo][테이블 이름]에 대해 'Dot', 'Underscore'를 및 'Underscore'로 대체하여 이를 실행할 수 있었습니다.
설정:
EXEC sp_columns INFORMATION_SCHEMA.COLUMNS GO //**이(가) 작동하지 않습니다.하지만 올바른 것처럼 sence/auto complete 정보를 제공합니다.
EXEC sp_columns INFORMATION_SCHEMA_COLUMNS GO //**Synapse에서 실행됩니다.하지만 충분히 재미있는 것은 자동 완성되지 않습니다.
언급URL : https://stackoverflow.com/questions/19730441/incorrect-syntax-near
'programing' 카테고리의 다른 글
INVALID_STATE_ERR: DOM 예외 11 (0) | 2023.08.20 |
---|---|
Android에서 비트맵 크기를 조정하는 방법? (0) | 2023.08.20 |
도커: 프로젝트의 여러 도커 파일 (0) | 2023.08.20 |
Oracle 패키지에 모든 예외를 기록하는 방법은 무엇입니까? (0) | 2023.08.20 |
시간 초과 jQuery 효과 (0) | 2023.08.20 |