2017-09-08 25 views
1

我在連接到Oracle數據庫中的表的Tableau中使用自定義SQL查詢。我有一些列名空間和一些沒有空格。如果我使用帶空格的列名,則會出現錯誤。請看下面:Tableau Oracle DB SQL列名使用空格選擇

用於列名,而不空間

SELECT Department FROM OG_COCKPIT_HC_CONTR_V -- (WORKS!) 

SELECT (Department) FROM OG_COCKPIT_HC_CONTR_V -- (WORKS!) 

SELECT "Department" FROM OG_COCKPIT_HC_CONTR_V -- (DOESN'T WORK) 

SELECT [Department] FROM OG_COCKPIT_HC_CONTR_V -- (DOESN'T WORK) 

SELECT 'Department' FROM OG_COCKPIT_HC_CONTR_V -- (DOESN'T WORK) 

對於「作業類型」字段沒有上述作品

Column Names 
"Department" 
"Job Type" 

方法。你知道什麼是正確的語法?

+0

根據https://stackoverflow.com/questions/13798035/oracle-table-column-name-with-space雙引號應該工作。您是否檢查過,確保它不區分大小寫,並且您輸入的內容完全相同? – jwhaley58

+0

單引號用於標識常量而不用於標識符。 SQL標識符中的方括號無效。 '(部門)'**完全**與'Department'相同。但'Department'和'「Department」'是兩個不同的列名:https://docs.oracle.com/database/121/SQLRF/sql_elements008.htm#SQLRF00223 –

回答

2
SELECT "Department","Job Type" FROM OG_COCKPIT_HC_CONTR_V 

應該可以正常工作,但請記住區分大小寫。

泰德。

0

如果SELECT Department ...有效,但SELECT "Department" ...不起作用,則表示列部門沒有使用雙引號定義,並且不區分大小寫。所有以下聲明應該工作正常:

select Department, "Job Type" FROM og_cockpit_hc_contr_v; 
select department, "Job Type" FROM og_cockpit_hc_contr_v; 
select DEPARTMENT, "Job Type" FROM og_cockpit_hc_contr_v; 

可能是作業類型中的錯字?考慮這樣一個例子如下:

SQL>  create or replace view og_cockpit_hc_contr_v as 
     select 'Dep1' as Department, 'Dummy' as "Job Type" from dual 
     ; 

SQL>  select column_name from user_tab_cols 
     where table_name= 'OG_COCKPIT_HC_CONTR_V' 
     and (upper(column_name) like 'JOB%' or upper(column_name) like'DEP%') 
     ; 

COLUMN_NAME 
----------------- 
DEPARTMENT 
Job Type 

SQL>  col department for a10 
SQL>  col "Job Type" for a10 
SQL>  select Department, "Job Type" FROM og_cockpit_hc_contr_v; 

DEPARTMENT Job Type 
---------- ---------- 
Dep1  Dummy 

Note: Oracle不建議使用帶引號的標識符的數據庫對象名稱。這些帶引號的標識符被SQL * Plus接受,但在使用其他管理數據庫對象的工具時可能無效。