SQL-запрос - Могу ли я сравнить, используя LEN в предложении SELECT? - PullRequest
2 голосов
/ 30 апреля 2010

Я в основном хочу сделать это:

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

Другими словами, верните логическое значение, сообщающее, больше ли длина Комментариев 1. Это дает мне синтаксическую ошибку.

Как мне это сделать?

Ответы [ 4 ]

7 голосов
/ 30 апреля 2010
SELECT  HasComments = CASE WHEN LEN(Comments) > 1 THEN 1 ELSE 0 END
FROM    TableName
1 голос
/ 30 апреля 2010

вам не хватает when и end

SELECT HasComments = CASE WHEN (LEN(Comments) > 1) WHEN 1 THEN 1 ELSE 0 END
 FROM TableName
1 голос
/ 30 апреля 2010

Лучшим способом было бы сделать Комментарии NULLable и проверить это. Затем можно использовать индексы вместо того, чтобы вызвать LEN () для сканирования таблицы.

0 голосов
/ 30 апреля 2010

Поскольку у вас нет предложения WHERE, скорее всего, вы возвращаете столбец данных:

SELECT  CASE WHEN LEN(Comments) > 1 THEN 1 ELSE 0 END as 'HasComments'
FROM    TableName 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...