programing

근처의 구문이 잘못됨

lastcode 2023. 8. 20. 11:13
반응형

근처의 구문이 잘못됨

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에서 실행됩니다.하지만 충분히 재미있는 것은 자동 완성되지 않습니다.

replace me with an underscore

enter image description here

using the dot, will autopoulate but after this go back and replace the dot with an underscore

언급URL : https://stackoverflow.com/questions/19730441/incorrect-syntax-near

반응형