2014-12-24 2 views
2

Я использую оператор IF, чтобы выбрать столбец, который не является NULL в процедуре SQL SELECT. Тем не менее, я получаю сообщение о том, что что-то не так с моим синтаксисом рядом с ключевым словом IF.Неправильный синтаксис около оператора IF

DECLARE @imgURL_prefix VARCHAR(100) 
DECLARE @imgSmall_Suffix VARCHAR(100) 
DECLARE @imgLarge_Suffix VARCHAR(100) 

SET @imgURL_prefix = '//sohimages.com/images/images_soh/' 
SET @imgSmall_Suffix = '-1.jpg' 
SET @imgLarge_Suffix = '-2.jpg' 

SELECT 
    P.ProductCode as ProductCode, 
    P.HideProduct as HideProduct, 
    P.Photos_Cloned_From as Photos_Cloned_From, 
    @imgURL_prefix + 
     LOWER(IF P.Photos_Cloned_From IS NOT NULL 
      P.Photos_Cloned_From 
     ELSE 
      P.ProductCode 
     END) 
     + @imgSmall_Suffix as PhotoURL_Small, 
    @imgURL_prefix + 
     LOWER(IF P.Photos_Cloned_From IS NOT NULL 
      P.Photos_Cloned_From 
     ELSE 
      P.ProductCode 
     END) 
     + @imgLarge_Suffix as PhotoURL_Large, 
    P.PhotoURL_Small as OriginalSmall, 
    P.PhotoURL_Large as OriginalLarge 
FROM 
    Products_Joined P 

Скрипт прекрасно работает без заявления IF, используя только LOWER(P.ProductCode) в это место.

+0

Ах, спасибо. Это исправило это. –

ответ

2

Вы можете использовать IIF(Expression, true, false) в SQL Server 2012 и более поздних версий и для старых изданий у вас есть сазе

/********* SQL SERVER 2012+ ***********/ 

SELECT 
    P.ProductCode as ProductCode, 
    P.HideProduct as HideProduct, 
    P.Photos_Cloned_From as Photos_Cloned_From, 
    @imgURL_prefix + 
     LOWER(IIF(P.Photos_Cloned_From IS NOT NULL , P.Photos_Cloned_From, P.ProductCode)) 
     + @imgSmall_Suffix as PhotoURL_Small, 
    @imgURL_prefix + 
     LOWER(IIF (P.Photos_Cloned_From IS NOT NULL, P.Photos_Cloned_From, P.ProductCode)) 
     + @imgLarge_Suffix as PhotoURL_Large, 
    P.PhotoURL_Small as OriginalSmall, 
    P.PhotoURL_Large as OriginalLarge 
FROM 
    Products_Joined P 

/********* SQL SERVER Older Versions ***********/ 

SELECT 
    P.ProductCode as ProductCode, 
    P.HideProduct as HideProduct, 
    P.Photos_Cloned_From as Photos_Cloned_From, 
    @imgURL_prefix + 
     LOWER(CASE WHEN P.Photos_Cloned_From IS NOT NULL 
       THEN P.Photos_Cloned_From ELSE P.ProductCode END) 
     + @imgSmall_Suffix as PhotoURL_Small, 
    @imgURL_prefix + 
     LOWER(CASE WHEN P.Photos_Cloned_From IS NOT NULL 
       THEN P.Photos_Cloned_From ELSE P.ProductCode END) 
     + @imgLarge_Suffix as PhotoURL_Large, 
    P.PhotoURL_Small as OriginalSmall, 
    P.PhotoURL_Large as OriginalLarge 
FROM 
    Products_Joined P 
+0

Можно ли сделать все выражение для PhotoURL_Small и PhotoURL_Large переменной как '@ imgur_url_large'? Я хочу сделать предложение WHERE, чтобы не экспортировать файлы, которые уже заполнены тем же самым полем. –

Смежные вопросы