2017-10-08 5 views
0

Ich muss den ersten Teil der Zeichenfolge extrahieren und in einer Variablen speichern.Wählen Sie Spalte A oder B basierend auf einem übereinstimmenden Wert

final String[] split = InputValue.split("_", 2); 
final String extractedValue = split[0]; 

Jetzt brauche ich so etwas wie dies zu tun: ich überprüfen müssen, ob die extractedValue Spalte emp_id oder emp_name

"SELECT Count(*)as count,Emp_Name,Emp_Id FROM Employee WHERE extractedValue=? IN(Emp_Id,Emp_Name)"; 

preparedStatement.setString(1, extractedValue); 

Ich bin keine solche Spalte in Tabelle Mitarbeiter einen Fehler.

Wie wird hier nach einem passenden Spaltenwert gesucht? Jede Hilfe wird geschätzt.

+0

Können Sie einige Beispieldaten teilen und das Ergebnis, das Sie versuchen, dafür zu bekommen? – Mureinik

Antwort

1

Hmmm, Ihr SQL ist seltsam, weil Sie COUNT(*) zusammen mit zwei Spalten zurückgeben, die nicht aggregiert sind.

Die Syntax für das, was Sie wollen, ist:

SELECT Count(*) as count, Emp_Name, Emp_Id 
FROM Employee 
WHERE ? IN (Emp_Id, Emp_Name); 

Aber ich Emp_Name und Emp_Id vom SELECT entfernen würde. Oder vielleicht tun:

SELECT Count(*) as count, 
     GROUP_CONCAT(DISTINCT Emp_Name) as Emp_Names, 
     GROUP_CONCAT(DISTINCT Emp_Id) as Emp_Ids 
FROM Employee 
WHERE ? IN (Emp_Id, Emp_Name); 
Verwandte Themen