SQL Server:查询表是否存在

时间:2016-09-01 16:27:13

标签: sql sql-server sql-server-2012

我有以下查询:

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 

为了工作,需要如何格式化?

3 个答案:

答案 0 :(得分: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-%';

答案 1 :(得分:0)

夫妻俩:

    选择列表不支持
  1. IF...ELSE,请改用<{3}}

  2. 选择列表中不支持
  3. CASE,只需要文字字符串值

  4. 有关相关示例,请参阅PRINT

答案 2 :(得分: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-%'