SQL查询 - 我可以在SELECT子句中使用LEN进行比较吗?

时间:2010-04-30 16:44:59

标签: sql sql-server tsql sql-server-2008 select

我基本上想要这样做:

SELECT HasComments = CASE (LEN(Comments) > 1) WHEN 1 THEN 1 ELSE 0 END FROM TableName

换句话说,返回一个布尔值,告诉我Comments的长度是否大于1.这给了我一个语法错误。

我该如何做到这一点?

4 个答案:

答案 0 :(得分:7)

SELECT  HasComments = CASE WHEN LEN(Comments) > 1 THEN 1 ELSE 0 END
FROM    TableName

答案 1 :(得分:1)

更好的方法是使注释为NULL并检查。然后可以利用索引而不是表扫描LEN()将导致索引。

答案 2 :(得分:1)

您错过了whenend

SELECT HasComments = CASE WHEN (LEN(Comments) > 1) WHEN 1 THEN 1 ELSE 0 END
 FROM TableName

答案 3 :(得分:0)

由于您没有WHERE子句,因此您最有可能返回一列数据:

SELECT  CASE WHEN LEN(Comments) > 1 THEN 1 ELSE 0 END as 'HasComments'
FROM    TableName