Error-no such column

CODEDRAGON Development/Big Data, R, ...

반응형


 

에러메시지

R 달리 SQL에서 .() 테이블 컬럼명에 사용할 없습니다. 그래서 .() 대신 _(unberbar) 표시해 주어야 합니다.

 

> sqldf("select avg(Sepal.Length) from iris where Species='setosa'")
Error in rsqlite_send_query(conn@ptr, statement) :
  no such column: Sepal.Length

>

 

 

() 대신 _(unberbar) 표시해 주었는데로 에러가 발생합니다.

> sqldf("select avg(Sepal_Length) from iris where Species='setosa'")
Error in rsqlite_send_query(conn@ptr, statement) :
  no such column: Sepal_Length

>

 

 

 

비정상 수행

전체 문장을 따옴표(" ") 묶고 . 있는 변수명을 작은 따옴표 (' ') 묶어줍니다. -> 비정상적으로 수행됩니다.

> sqldf("select avg('Sepal.Length') from iris where 'Species'='setosa'")
  avg('Sepal.Length')
1                  NA

>

 

 

# 비정상 수행

#전체 문장을 따옴표(" ") 묶고 . 있는 변수명을 작은 따옴표 (' ') 묶어줍니다. -> 비정상적으로 수행됩니다.

 

> sqldf("select avg('Sepal_Length') from iris where Species='setosa'")
  avg('Sepal_Length')
1                   0

>

 

# 비정상 수행

#전체 문장을 따옴표(" ") 묶고 . 있는 변수명을 작은 따옴표 (' ') 묶어줍니다. -> 비정상적으로 수행됩니다.

> sqldf("select avg('Sepal.Length') from iris where Species='setosa'")
  avg('Sepal.Length')
1                   0

>

 

 

 

where절의 컬럼명에도 따옴표(" ") 감싸줍니다.

> sqldf('select avg("sepal_length") from iris where Species="setosa"')
  avg("sepal_length")
1                   0

>

따옴표(" ") 컬럼명을 묶어줄 경우 .() _(underbar) 바꾸지말고 SQL 원래 컬럼명인 .()으로된 이름으로 사용해주여야 합니다.

 

 

 

 

 

 

해결방법

전체 문장을 작은 따옴표 (' ') 묶고 . 있는 변수명을 따옴표(" ") 묶어줍니다.

따옴표(" ") 컬럼명을 묶어줄 경우 .() _(underbar) 바꾸지말고 SQL 원래 컬럼명인 .()으로된 이름으로 사용해줍니다.

> sqldf('select avg("Sepal.Length") from iris where Species="setosa"')
  avg("Sepal.Length")
1               5.006
> sqldf('select avg("Sepal.Length") from iris where "Species"="setosa"')
  avg("Sepal.Length")
1               5.006

>