2010-04-08 11 views
5
declare @d varchar 
set @d = 'No filter' 

if (@d like 'No filter') 
    BEGIN 
    select 'matched' 
    end 
else 
    begin 
    select 'not matched' 
    end 

el resultado de arriba no siempre coincide, ¿alguien puede decirme por qué y cómo puedo usar el resultado similar o '=' en mi procedimiento almacenado. graciasms sql use como declaración resultado en instrucción if

Respuesta

5

Cambiar la declaración de

declare @d varchar(10) 

Entonces

declare @d varchar(10) 

set @d = 'No filter' 

if (@d LIKE 'No filter') 
    BEGIN 
    select 'matched' 
    end 
else 
    begin 
    select 'not matched' 
    end 

va a funcionar.

Por favor recuerde que LIKE se utiliza para el ajuste de patrones,

algo así como

DECLARE @Val VARCHAR(10) 
SET @Val = 'foo bar' 
if (@Val LIKE '%foo%') 
    BEGIN 
    select 'matched' 
    end 
else 
    begin 
    select 'not matched' 
    end 

Así que en su caso es posible que desee cambiar el código para

declare @d varchar(10) 
set @d = 'No filter' 

if (@d = 'No filter') 
    BEGIN 
    select 'matched' 
    end 
else 
    begin 
    select 'not matched' 
    end 

con un signo "= "

4

Es necesario declarar d como varchar (100) no sólo varchar, de lo contrario, sólo se convierte en N

declare @d varchar 
set @d = 'No filter' 

debe ser:

declare @d varchar(100) 
set @d = 'No filter' 

También hay necesidad de utilizar LIKE con este puedes usar =.

+0

Añadir @d imprimir o @d para probar esto a ti mismo. – MJB

+0

+1: Correcto: es un buen hábito definir siempre los atributos del tipo de datos que asumir los valores predeterminados. –

0

Me parece que el operador es muy útil.

IF ( @PLI_Component = '' + @ITemID + '' + 'BD' O @PLI_Component = '' + @ITemID + '' + 'BD/1' O @PLI_Component = '' + @ ITemID + '' + 'BD/2' O @PLI_Component = '' + @ITemID + '' + 'BD/3'
O @PLI_Component = '' + @ITemID + '' + 'BD/4'
O @PLI_Component = '' + @ITemID + '' + 'BD/5'

)

se pueden sustituir

por una sola línea que es

@PLI_Component COMO @ITemID + 'BD'

Saludos

Cuestiones relacionadas