Home   Artículos   Recursos   Foros   
Artíclos recientes publicados en Latindevelopers:
Visual C++: NSDoubleEdit: Un control para el manejo de números decimales en Visual C++.
Visual C++: Implementando una Calculadora en Visual C++
Visual C++: CCommandLine: Una clase para el uso de la linea de comando
Visual C++: Una clase para el manejo del Registro

IF en SQL Server

Select Lenguaje Query, aqui podras encontrás Consultas coomo Select, Insert, Update...., y mucho mas...

IF en SQL Server

Notapor danielrcyberia® el Mié Ene 24, 2007 6:07 am

Saludos Cordiales Colegas!!!

Alguien sabe como hacer en una sentencia SQL un IF en SQL Server?

Realmente no existe solo lo suplanta un Select Case When EndCase

el problema es que no me sirve esa sentencia por incompatibilidad con otros motores de base de datos! supuestamente hay un UDF de SQL Server que emula el operador IF pero no he conseguido mas que ejemplos fallidos
Saludos y Exitos

Daniel Rivas
danielrcyberia®
Novato
Novato
 
Mensajes: 4
Registrado: Mié Ene 24, 2007 5:54 am

Re: IF en SQL Server

Notapor latindeveloper el Vie Ene 26, 2007 6:15 pm

En una consulta directa puedes utilizar IF:

Código: Seleccionar todo
SELECT IF(edad>18,'Mayor de Edad','Menor de edad') as Condicion FROM usuarios;
Imagen
Avatar de Usuario
latindeveloper
Administrador
Administrador
 
Mensajes: 1061
Registrado: Lun Jun 02, 2003 8:29 pm
Ubicación: Peru

Notapor danielrcyberia® el Dom Ene 28, 2007 12:11 pm

Gracias por tu respuesta Administrador

Pero en SQL Server esta sentencia no es soportada todo depende del motor de BD q utilises

Soporta Case pero no me sirve, en Oracle la sentencia es DECODE, en MySQL es IF, queria saber si hay un UDF de SQL Server q lo emulara

Gracias
Saludos y Exitos

Daniel Rivas
danielrcyberia®
Novato
Novato
 
Mensajes: 4
Registrado: Mié Ene 24, 2007 5:54 am

Re: IF en SQL Server

Notapor latindeveloper el Dom Ene 28, 2007 2:03 pm

Habia olvidado ese detalle, (será por que no uso SQL Server hace un buen tiempo)

Encontré una coleccion de UDF's que pueden servirte:

http://code.filehungry.com/product/lang ... _functions

Dentro de los cuales esta el IIF:


Código: Seleccionar todo
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO


CREATE function IIF(@b bit, @t SQL_VARIANT,@f SQL_VARIANT  )
returns SQL_VARIANT
as
BEGIN
DECLARE @temp SQL_VARIANT
IF @b=1
   SELECT @temp=@t
ELSE
   SELECT @temp=@f
return @temp
END


GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

Imagen
Avatar de Usuario
latindeveloper
Administrador
Administrador
 
Mensajes: 1061
Registrado: Lun Jun 02, 2003 8:29 pm
Ubicación: Peru

Notapor danielrcyberia® el Dom Ene 28, 2007 5:45 pm

Saludos Cordiales Colega!!

En efecto, este es un buen ejemplo de como podria ser un UDF q resolviera este dilema, pero como ya habia alcanzado ese nivel te comento cual es el detalle por el cual no funciona!


Cuando creamos la funcion
CREATE function IIF(@b bit, @t SQL_VARIANT,@f SQL_VARIANT )

El parametro nos debe permitir una verdadera expresion logica, donde podamos usar diferente operadores logicos (=,<,>,and, or,etc.) y asi dar una verdadera evaluacion de la expresion

DECLARE @temp SQL_VARIANT
IF @b=1
SELECT @temp=@t

Empezando el If esta el talon de Aquiles de este ejemplo ya que la expresion es evaluada con un unico operado y condicion! de paso declarando la expresion como bit tambien condiciona la expresion a una sola! lo q tendriamos algo asi! Iif(1,'verdadero','falso'), IIF(0,'verdader','falso')

Concluyendo q no seria posible un verdadero If o IIF lo q necesitaria saber es si hay un tipo de datos logico que permita una verdadera Expresion donde usara operadores logicos, o alguna otra idea que tengan viendo estos ejemplos

Muuuuuachass Gracias por todo de verdad!!
Saludos y Exitos

Daniel Rivas
danielrcyberia®
Novato
Novato
 
Mensajes: 4
Registrado: Mié Ene 24, 2007 5:54 am


Volver a El lenguaje SQL

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados