2016-09-01 3 views
-2

У меня есть следующий запрос:SQL Server: запрос, если таблица существует

SELECT 
    COUNT(*) over() as countNum, 
    [F1] AS STANDARDandOBJ, 
    [F2] AS CLUSTER, 
    [F3] AS OBJECTIVE, 
    [F4] AS EXTRA0 
    IF COL_LENGTH([tmpExcelDB].[dbo].['Blahsing$'], [F5]) IS NOT NULL 
     BEGIN 
      print 'exists' 
     END 
    ELSE 
     BEGIN 
      print 'Nope' 
     END, 
    CONCAT([F1], [F2]) AS combined 
FROM 
    [tmpExcelDB].[dbo].['Blahsing$'] 
WHERE 
    LOWER(F3) NOT LIKE 'course tools-%' 

Но, похоже, что у меня есть ошибка:

Неправильный синтаксис около ''.

Что указывает на строку:

,CONCAT([F1], [F2]) AS combined 

Как это нужно быть отформатирован для работы?

+0

Вы можите использовать '' IF' в SELECT' заявлении, а также то же самое для '' печати – Marusyk

+0

** Причина downvote, так как бессмысленно случайно делать это без объяснения причин. ** Это форум помощи не * Я не могу поверить, что вы не знали, что это форум. – StealthRT

ответ

0

пару вещей:

  1. IF...ELSE не поддерживается в списке выбора, используйте CASE вместо

  2. PRINT не поддерживается в списке выбора, требуется только буквенное значение строки

См. Пример CASE Documentation.

2

Вы не можете использовать IF внутри SELECT, вам нужно выражение CASE. Кроме того, это не имеет смысла использовать PRINT внутри колонны:

SELECT 
    COUNT(*) over() as countNum 
    ,[F1] AS STANDARDandOBJ 
    ,[F2] AS CLUSTER 
    ,[F3] AS OBJECTIVE 
    ,[F4] AS EXTRA0 
    ,CASE 
     WHEN COL_LENGTH('[tmpExcelDB].[dbo].[''Blahsing$'']', '[F5]') IS NOT NULL 
     THEN 'exists' 
     ELSE 'Nope' 
     END 
    ,CONCAT([F1], [F2]) AS combined 
    FROM [tmpExcelDB].[dbo].['Blahsing$'] 
    WHERE 
    LOWER(F3) NOT LIKE 'course tools-%'; 
+0

Вот и все! Спасибо Lamak! – StealthRT

0
SELECT 
    COUNT(*) over() as countNum 
    ,[F1] AS STANDARDandOBJ 
    ,[F2] AS CLUSTER 
    ,[F3] AS OBJECTIVE 
    ,[F4] AS EXTRA0 , 
    (CASE When COL_LENGTH([tmpExcelDB].[dbo].['Blahsing$'], [F5]) IS NOT NULL 
     THEN 
      'exists'    
    ELSE    
      'Nope' 
     END), 

    CONCAT([F1], [F2]) AS combined 
    FROM [tmpExcelDB].[dbo].['0812 Orientation to Nursing$'] 
    WHERE LOWER(F3)NOT LIKE 'course tools-%' 
Смежные вопросы