Los*_*der 4 sql t-sql sql-server case
我需要为某些条件返回2个值中的一个:我的不同情况是:当一列在右端有'substring'时,返回该列.(即LIKE'%substring')否则返回其他列(来自其他表)
这有效:
SELECT * From Table1 where col1 is not null and col1 like '%substring'
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用:
SELECT col5,
CASE Table1.Col1
WHEN NULL Then Table2.Col2
WHEN '%substring' THEN Table1.Col1
ELSE Table2.Col2
FROM Table1
JOIN Tablex ON Tablex.colID= Tabley.colID
JOIN Table1 ON Table1.colID = Tablex.colID
Run Code Online (Sandbox Code Playgroud)
和一些具有table1/table2的外键的相互关联表的更多连接...结果总是从'else'部分返回.
我也试过这个,这也不起作用:
SELECT col5,
CASE Table1.Col1
WHEN NULL Then Table2.Col2
WHEN '' THEN Table2.Col2
ELSE Table1.col1
FROM Table1
JOIN Tablex ON Tablex.colID= Tabley.colID
JOIN Table1 ON Table1.colID = Tablex.colID
Run Code Online (Sandbox Code Playgroud)
需要使用:
SELECT col5,
CASE
WHEN Table1.Col1 IS NULL Then Table2.Col2
WHEN Table1.Col1 LIKE '%substring' THEN Table1.Col1
ELSE Table2.Col2
END
FROM Table1
JOIN Tablex ON Tablex.colID= Tabley.colID
JOIN Table1 ON Table1.colID = Tablex.colID
Run Code Online (Sandbox Code Playgroud)
CASE/WHEN表达式等价于"=",因此指定NULL将永远不会正确评估,因为您需要使用IS NULL.同样,不能假设正在使用LIKE ......
您还缺少END关键字来表示CASE表达式的结束.
介意Table2.Col2和Table1.Col1数据类型是相同的了.
| 归档时间: |
|
| 查看次数: |
7433 次 |
| 最近记录: |