我将如何进行以下查询?
SELECT
CASE LEN(field1)
WHEN > 15 --Error: Incorrect syntax near '>'.
THEN SUBSTRING(field1, 1, 15)
ELSE field1
END
AS 'My Field'
FROM MyTbl
你能否在CASE条款中进行这样的比较?
答案 0 :(得分:6)
SELECT
CASE
WHEN LEN(field1) > 15
THEN SUBSTRING(field1, 1, 15)
ELSE field1
END
AS 'My Field'
FROM MyTbl
当你按照它的方式编写它时,可以将它想象成switch
语句,在那里你进行隐式的相等比较。如果您需要更复杂的逻辑,则需要以这种方式编写CASE
。
答案 1 :(得分:5)
SELECT
CASE
WHEN LEN(field1) > 15
THEN SUBSTRING(field1, 1, 15)
ELSE field1
END
AS 'My Field'
FROM MyTbl
您需要做的是将布尔表达式放在WHEN ...
子句中。
答案 2 :(得分:2)
你应该像这样重写:
SELECT CASE WHEN LEN(field1) > 15 THEN SUBSTRING(field1, 1, 15)
ELSE field1 END AS [My Field]
FROM MyTbl
当您编写CASE SomeColumn WHEN
时,它需要进行相等比较,因此您可以在其他情况下使用它。
SELECT CASE Column1 WHEN 1 THEN 'One' WHEN 2 THEN 'Two' ELSE 'Something else' END