Comment puis-je obtenir ce qui suit: de sorte qu'il produirait les résultats suivants: p> J'utilise sql Serveur mais un exemple de DBMS croisé serait bon. P> p>
3 Réponses :
Eh bien, dans Oracle, vous pouvez faire quelque chose comme
SELECT CASE
WHEN 1 < 2 THEN
'TRUE'
ELSE
'FALSE'
END AS ONE,
CASE
WHEN 1 > 2 THEN
'TRUE'
ELSE
'FALSE'
END AS TWO
FROM DUAL;
En supposant que c'est SQL Server, vous pouvez utiliser Case Déclaration. Dans le lieu de condition, vous pouvez également utiliser une variable ou des valeurs de colonne. Fondamentalement une expression. P> p>
Avec SQL Server, vous n'avez même pas besoin de la clause de la clause.
@Dave - Oui, vous avez raison. Le à partir de code> doit être utilisé si l'expression a des références aux colonnes à partir du tableau.
Utilisez une déclaration de cas:
declare @value1 int, @value2 int set @value1 = 1 set @value2 = 2 select case when (@value1 < @value2) then 'True' else 'False' end as One case when (@value1 > @value2) then 'False' else 'True' end as Two from table
Beaucoup de gens ont répondu correctement, je veux juste ajouter cela dans des moteurs non endommagés par le cerveau comme MySQL et PostgreSQL, vous écririez exactement comme vous l'avez. Oracle et MSSQL ont apparemment le type booléen mais uniquement en interne (à la suite des opérateurs de comparaison), mais pas comme un type de données pouvant être renvoyé à partir d'un
Sélectionner code>. Aucune idée de pourquoi.@Amadan Essayez ceci pour une raison - ce n'est pas dans la spécification ANSI SQL. Pas même SQL-2003 sauvage.net.au/sql
@Richard Qu'est-ce que c'est alors? sauvage.net.au/sql/sql-2003- 2.bnf.html # Boolean% 20type Le problème Comme je le comprends, c'est que les gens ne peuvent pas être d'accord sur le résultat d'opérations logiques dans la logique trinareuse étendue de NULL, mais je pense que c'est un argument de connerie, Parce que vous allez de facto avoir le type booléen à la suite de comparaisons, et vous aurez nul là-bas, et il doit être traité d'une manière ou d'une autre - la prévention de ce résultat d'être directement retournée est une merde en balayage sous le tapis, à mon avis .