SSMS Designer问题IIF SQL Server

时间:2019-07-15 17:25:25

标签: sql sql-server tsql

我在SQL Server 2017中构建了一个SQL查询,如下所示:

SELECT IIF(500 < 1000, 'YES', 'NO');

虽然这在正常查询中有效,但我似乎无法在SQL Server视图中使用它。引发错误,表明无法识别“ <”。其他所有运营商也是如此。 为什么我不能在视图中使用它?

修改

CREATE VIEW queryTest 
AS
    SELECT IIF(500 < 1000, 'YES', 'NO');

尽管如果在视图上单击“设计”,SQL Server Management Studio会引发错误,但是您仍然可以对其运行Selects

2 个答案:

答案 0 :(得分:3)

一个问题是,您需要在视图中命名列。不命名该列会给出一个非常清晰的错误消息:

  

消息4511的16级状态1线路2

     

创建视图或函数失败,因为未为列1指定任何列名。

使用名称很容易解决:

CREATE VIEW v as
    SELECT IIF(500<1000, 'YES', 'NO') as x;

Here是db <>小提琴。

答案 1 :(得分:0)

我无法重新创建您的问题,它在SQL Server 2017(Express)上对我来说正常工作

function ListFile1
  dirName = '...';
  files = dir(fullfile(dirName, '*.txt'));
  files = {files.name};

fidEmpty = fopen(sprintf('output_empty_files.txt'), 'w+t');
fidNonempty = fopen(sprintf('output_nonempty_files.txt'), 'w+t');

for iFile = 1:numel(files)
  content = fileread(files{iFile})
  if (isempty(content))
    fprintf(fidEmpty, '%s\n', files{iFile});
  else
    fprintf(fidNonempty, '%s\n', files{iFile});
  end
end

fclose(fidEmpty);
fclose(fidNonempty);

结果:

CREATE VIEW queryTest 
AS SELECT 
IIF(500 < 1000, 'YES', 'NO') as yn;

select * from querytest;

请注意,我建议将yn -- YES 添加到view命令中。