2016-07-14 24 views
0

Ich frage mich, ob es möglich ist zu erstellen auswählen, die verschiedene verkettete Zeichenfolgen basierend auf einem Wert zurückgibt .... Zum Beispiel.SQL Server: Wählen Sie eine der concats auf select

Tabelle A hat 3 Spalten

Name | Age | Gender 

Ich mag wäre in der Lage sein, so etwas wie dieses

select 
    --if Gender = male 
    concat(Name,'Tom',Gender) 
    --if Gender = female 
    concat(Name,'Kate',Gender) 
+0

Welche Datenbank haben Sie benutzt? – Blank

+0

Sie suchen nach Fall .. wenn Syntax – Jens

+0

bitte geben Sie die erwartete Ausgabe und einige Beispieldaten – TheGameiswar

Antwort

2

dies zu tun versuchen:

SELECT 
    CASE WHEN Gender = 'male' THEN CONCAT(Name,'Tom',Gender) 
     WHEN Gender = 'female' THEN CONCAT(Name,'Kate',Gender) END AS anyname 
    // If it's Sql Server, CONCAT(Name,'Tom',Gender) can be Name + 'Tom' + Gender 
    // If it's Oracle, CONCAT(Name,'Tom',Gender) can be Name || 'Tom' || Gender 
FROM TableA 
1

Sie if verwenden können. Hier sehr einfaches Beispiel:

select if(1 = 1, 'true', 'false'); 

In Ihrem Fall können Sie verschachtelte verwenden, wenn:

select 
if (
    Gender = 'male', 
    concat(Name,'Tom',Gender), 
    if (Gender = 'female', concat(Name,'Kate',Gender), 'neither male nor female') 
) 
from yourTable; 
+0

Ich glaube, du meinst iif :) – TheGameiswar

0

in SQL Server

select Name + case when Gender = 'male' then 'Tom' else 'Kate' end + Gender as NewColumn 
from TableA 
0

diese einfachen Versuchen ohne wenn oder Fall nur mit wählt:

select (select concat(Name,'Tom',Gender) as Male from table where Gender = male),(select concat(Name,'Kate',Gender) as Female from table where Gender = female) from table 
+0

dies hat keine Wenn und Case-Anweisung alle mit Auswahlen – Saeid