Programming

SQL 키워드처럼 보이는 SQL 열 이름을 처리하는 방법은 무엇입니까?

procodes 2020. 5. 5. 20:50
반응형

SQL 키워드처럼 보이는 SQL 열 이름을 처리하는 방법은 무엇입니까?


내 열 중 하나를이라고 from합니다. 이름을 바꾸지 않아서 이름을 바꿀 수 없습니다. SELECT from FROM TableNameSQL Server와 혼동을 피하기 위해 비슷한 작업을 수행 하거나 특별한 구문이 있습니까?


열 이름을 괄호로 묶으면 from[from]이됩니다.

select [from] from table;

다음을 사용할 수도 있습니다 (여러 테이블을 쿼리 할 때 유용함).

select table.[from] from table;

PostgreSQL에 있었던 경우 이름과 같이 큰 따옴표를 사용하십시오.

select "from" from "table";

참고 : 내부적으로 PostgreSQL은 인용되지 않은 모든 명령과 매개 변수를 자동으로 소문자로 변환합니다. 명령과 식별자는 대소 문자를 구분하지 않습니다. 간단한 * from tAblE; 테이블에서 select * 로 해석됩니다 . . 그러나 큰 따옴표 안에있는 매개 변수는 그대로 사용되므로 대소 문자를 구분합니다. select * from "table"; 그리고 "표"SELECT * FROM; 두 개의 다른 테이블에서 결과를 가져옵니다.


당신이하고있는 동안-다른 것으로 별칭을 지정하십시오 (또는 더 나은 방법으로보기 나 SP를 사용하고 이전 직접 액세스 방법을 사용하지 마십시오).

SELECT [from] AS TransferFrom -- Or something else more suitable
FROM TableName

귀하의 질문에 대한 답변이 여기에있는 것 같지만이 주제에 대한 의견을 하나 더 추가하고 싶습니다.

데이터베이스를 설계하는 사람은 예약 키워드를 잘 알고 사용하지 않아야합니다. 그것을 사용하는 사람을 발견하면, 정중 한 방법으로 알려주십시오. 여기서 키워드는 예약어 입니다.

추가 정보:

"예약 된 키워드는 개체 이름으로 사용해서는 안됩니다. 이전 버전의 SQL Server에서 업그레이드 된 데이터베이스에는 이전 버전에서는 예약되지 않은 단어는 포함하지만 현재 버전의 SQL Server에는 예약 된 단어가 포함 된 식별자가 포함될 수 있습니다. 이름을 변경할 수있을 때까지 구분 된 식별자를 사용하여 개체를 제거하십시오. " http://msdn.microsoft.com/en-us/library/ms176027.aspx

"데이터베이스에 예약 된 키워드와 일치하는 이름이 포함 된 경우 해당 오브젝트를 참조 할 때 구분 식별자를 사용해야합니다. 자세한 정보는 식별자 (DMX)를 참조하십시오." http://msdn.microsoft.com/en-us/library/ms132178.aspx


다음 두 가지 방법이 있습니다.

  1. 여기에 인용 부호를 사용하십시오 :

FROM TableName에서`from` 선택

  1. 테이블 이름을 다음과 같이 언급 할 수 있습니다.

SELECT TableName.from FROM TableName


SQL Server를 사용하는 경우 열 또는 테이블 이름을 대괄호로 묶기 만하면됩니다.

select [select]
from [table]

나는 또한이 문제에 직면했다. 이에 대한 해결책은 쿼리에 [Column_Name]과 같은 것을 넣는 것입니다.

string query= "Select [Name],[Email] from Person";

따라서 완벽하게 작동합니다.


Apache Drill에서 역 따옴표를 사용하십시오.

select `from` from table;

안녕하세요, 저는 완전히 ANSI와 호환되는 Teradata 시스템에서 작업하고 있습니다. 큰 따옴표 ""를 사용하여 이러한 열의 이름을 지정하십시오.

type를 들어 SQL 예약 키워드이며 따옴표 안에 사용 type하면 사용자 지정 이름으로 취급됩니다.

아래 코드 예제를 참조하십시오.

CREATE TABLE alpha1
AS
(
SEL
product1
type_of_product AS "type"
FROM beta1
) WITH DATA
PRIMARY INDEX (product1)

--type is a SQL reserved keyword

TYPE

--see? now to retrieve the column you would use:

SEL "type" FROM alpha1

다음과 같이 열 이름을 괄호 안에 넣을 수 있습니다.

Select  [from] from < ur_tablename>

또는

임시 테이블에 넣은 다음 원하는대로 사용하십시오.
예:

Declare @temp_table table(temp_from varchar(max))

Insert into @temp_table
Select * from your_tablename

여기서는 your_tablename에 열이 하나만 있다고 가정합니다 (예 : from).


이름이 키워드 인업데이트 하려고 할 때 같은 문제가 발생했습니다 . 위의 해결책은 도움이되지 않았습니다. 다음과 같이 테이블 이름을 지정하여 해결했습니다.

UPDATE `survey`
SET survey.values='yes,no'
WHERE (question='Did you agree?')

다음은 완벽하게 작동합니다.

SELECT DISTINCT table.from AS a FROM table

MySQL에서는 역 따옴표 (`)를 사용하는 대신 UI를 사용하여 열 이름을 변경할 수 있습니다. 테이블> 테이블 변경> sql 키워드가 포함 된 열 이름 편집> 커밋을 마우스 오른쪽 단추로 클릭하십시오.

select [from] from <table>

As a note, the above does not work in MySQL


Judging from the answers here and my own experience. The only acceptable answer, if you're planning on being portable is don't use SQL keywords for table, column, or other names.

All these answers work in the various databases but apparently a lot don't support the ANSI solution.

참고URL : https://stackoverflow.com/questions/285775/how-to-deal-with-sql-column-names-that-look-like-sql-keywords

반응형