SQL Server CASE子句中的比较

Nic*_*ndo 3 t-sql sql-server case

我将如何进行以下查询?

SELECT
CASE LEN(field1)
WHEN > 15    --Error: Incorrect syntax near '>'.
THEN SUBSTRING(field1, 1, 15)
ELSE field1
END
AS 'My Field'
FROM MyTbl
Run Code Online (Sandbox Code Playgroud)

你能否在CASE条款中做这样的比较?

Yuc*_*uck 6

SELECT
CASE 
WHEN LEN(field1) > 15
THEN SUBSTRING(field1, 1, 15)
ELSE field1
END
AS 'My Field'
FROM MyTbl
Run Code Online (Sandbox Code Playgroud)

当你按照它的方式编写它时,可以将它想象成一个switch声明,在那里进行隐式的相等比较.如果您需要更复杂的逻辑,则需要以CASE这种方式编写.


小智 5

SELECT 
    CASE
        WHEN LEN(field1) > 15
            THEN SUBSTRING(field1, 1, 15) 
        ELSE field1 
    END 
    AS 'My Field' 
FROM MyTbl 
Run Code Online (Sandbox Code Playgroud)

你需要做的是把你的布尔表达式放在WHEN ...子句中.