2016-11-11 15 views
0

我試圖返回共享值的列的名稱。我在想我可以查詢數據庫,並提取名稱。如何返回共享值的列的名稱?

例如,當我的共享值爲Tarantino時,我想返回DirectorActors列,因爲他既是演員也是導演。

String x = "Tarantino"; 

String q = 
     "SELECT Actors, Director, Genre, Country, Released, WHERE Actors LIKE '%"+x+"%' " + 
     "AND WHERE Director LIKE '%"+x+"%' " + 
     "AND WHERE Genre LIKE '%"+x+"%' " + 
     "AND WHERE Country LIKE '%"+x+"%' " + 
     "AND WHERE Released LIKE '%"+x+"%' " ; 

,然後我可以在光標迭代,並獲得列名DirectorActors

+0

我認爲你的語法是錯誤的,但是如果沒有對你的表和列的更好的描述,很難分辨出來。你能提供DDL還是簡要說明? –

+0

對不起,我更新了查詢。我想我錯了,假設查詢中不會返回空列。例如,由於塔倫蒂諾不是流派,因此流派專欄將是空的。我希望只檢索非空列。 –

回答

0

要尋找匹配的一列,試試這個:

select exists (select * from actors where director like '%"+x+"%'); 

爲了把所有四個在一起,你可以嘗試:

select q1, q2, q3, q4 
from 
    (select exists (...) as q1) 
    join 
    (select exists (...) as q2) 
    join 
    (select exists (...) as q3) 
    join 
    (select exists (...) as q4) 

SUPERSEDED:

你試過:

"SELECT Actors, Director, Genre, Country, Released, WHERE Actors LIKE '%"+x+"%' " + 
    "AND Director LIKE '%"+x+"%' " + 
    "AND Genre LIKE '%"+x+"%' " + 
    "AND Country LIKE '%"+x+"%' " + 
    "AND Released LIKE '%"+x+"%' " ; 

注意,方向選擇的作品,它返回所有列。您查詢應該返回一個匹配您的所有四個條件。不過,我認爲你正在嘗試做一些不同的事情。究竟什麼是不明白的。

+0

我想只返回包含值塔倫蒂諾的列。我只需要他們的名字。 –

+0

好吧,所以你想知道哪些列包含嵌入x的值。此外,你不關心那些匹配發生在哪一行。所以,我認爲你需要的基本上是四個查詢,每個列一個。我不是SQL專家,但我會嘗試修改上面的答案。 –