12
votes

Sélectionnez le résultat d'une comparaison dans l'instruction SQL

Comment puis-je obtenir ce qui suit: xxx

de sorte qu'il produirait les résultats suivants: xxx

J'utilise sql Serveur mais un exemple de DBMS croisé serait bon.

sql

3 commentaires

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 . 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 .


3 Réponses :


0
votes

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;


0 commentaires

16
votes

En supposant que c'est SQL Server, vous pouvez utiliser Case Déclaration. XXX

Dans le lieu de condition, vous pouvez également utiliser une variable ou des valeurs de colonne. Fondamentalement une expression.


2 commentaires

Avec SQL Server, vous n'avez même pas besoin de la clause de la clause.


@Dave - Oui, vous avez raison. Le à partir de doit être utilisé si l'expression a des références aux colonnes à partir du tableau.



0
votes

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


0 commentaires