SQL 키워드처럼 보이는 SQL 열 이름을 처리하는 방법은 무엇입니까?
내 열 중 하나를이라고 from
합니다. 이름을 바꾸지 않아서 이름을 바꿀 수 없습니다. SELECT from FROM TableName
SQL 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
다음 두 가지 방법이 있습니다.
- 여기에 인용 부호를 사용하십시오 :
FROM TableName에서`from` 선택
- 테이블 이름을 다음과 같이 언급 할 수 있습니다.
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.
'Programming' 카테고리의 다른 글
클라이언트에서 잠재적으로 위험한 Request.Path 값이 발견되었습니다 (*) (0) | 2020.05.05 |
---|---|
페이지를 떠나기 전에 JavaScript (0) | 2020.05.05 |
Go는 어떻게 그렇게 빨리 컴파일됩니까? (0) | 2020.05.05 |
변경시 선택한 파일의 전체 경로를 얻는 방법 (0) | 2020.04.27 |
힘내 오류 : src refspec 마스터가 (0) | 2020.04.25 |