Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Case语句_Sql_Sql Server_Select_Case Expression - Fatal编程技术网

SQL Case语句

SQL Case语句,sql,sql-server,select,case-expression,Sql,Sql Server,Select,Case Expression,这是我的SQL语句。我想检查字段测量的长度,如果长度为6个字符,我想显示四个0,否则显示三个0。我可以得到一个错误: “=”附近的语法不正确 这个怎么样: select MIN(Measurement), (Case WHEN len(measurement) = 6 then '0000' ELSE '000' END) as [Min] from LeachingView where DateTimeStamp > '2011-01-01' and measurement

这是我的SQL语句。我想检查字段测量的长度,如果长度为6个字符,我想显示四个0,否则显示三个0。我可以得到一个错误:

“=”附近的语法不正确

这个怎么样:

select MIN(Measurement),
     (Case WHEN len(measurement) = 6 then '0000' ELSE '000' END) as [Min]
from LeachingView  where DateTimeStamp > '2011-01-01' and measurement > 0
此外,您还将骨料与非骨料混合

更新

您应该丢失
“非设计”
。说明:当您在
案例
之后输入一个“变量”时,您可以在子句与变量比较相等时使用
。因此,您的SQL也可以是这样的:

select MIN(Measurement), 

    (Case 
        WHEN len(min(measurement)) = 6 then '0000'
        ELSE '000'
        END) as [Min]

from LeachingView 
where DateTimeStamp > '2011-01-01' and measurement > 0 
也就是说,您可以在以下格式中使用
CASE

select MIN(Measurement), 

    (Case len(min(measurement))
        WHEN  6 then '0000'
        ELSE '000'
        END) as [Min]

from LeachingView 
where DateTimeStamp > '2011-01-01' and measurement > 0 

我猜你想在测量的开头加上一个

CASE SomeField
   WHEN 1 then 'One'
   WHEN 2 the 'Two'
   else 'Three or more'
end
事实证明,我甚至不需要案例陈述,但这篇文章帮助我学会了如何使用它们。 相反,我只是使用了在数字前面加上10个0的代码。然后我选择了正确的8个字符。这就是代码所做的

      (select min(measurement)
         from LeachingView 
         where measurement > 0 and inspectionid = RIGHT('000000000' + part_desc, 10)                     
             and datetimestamp > '2010-12-31'
  ) as [Non-Destructive Min],

感谢大家的帖子

,因为如果我们不问,答案将是“否”:您是否仔细检查了“测量”列是否为字符(或varchar,或其他)类型?len(测量)和measurement>0一起使用。度量似乎是字符串,但它也保证是整数吗?@Adrian-sqlserver(来自“=”消息附近的错误语法)我假设其他一些RDBMS可以提供类似的消息。将尽快重新标记。另外,我修正了我的答案,因为我混合了聚合和非聚合。您是否使用它将数值格式化为固定位数?如果是这样,有更好的方法来实现这一点。不能混合聚合和非聚合您正在混合聚合和非聚合显然我应该远离SQL Server。太久了。哇,我不想念它!我最终找到了答案,我把它贴在了下面。感谢您提供有关案例陈述的快速教程。最后我没有用它,但现在我知道了
SELECT CONCAT(Case WHEN LEN(Measurement) = 6 THEN '0000' ELSE '000' END, MIN(Measurement)) AS Measurement
FROM LeachingView 
WHERE DateTimeStamp > '2011-01-01' AND Measurement > 0;
      (select min(measurement)
         from LeachingView 
         where measurement > 0 and inspectionid = RIGHT('000000000' + part_desc, 10)                     
             and datetimestamp > '2010-12-31'
  ) as [Non-Destructive Min],
  RIGHT('000000000' + part_desc, 10)