Mar*_*acz 41 sql sql-server sql-server-2008-r2
如果查询没有返回任何行,是否有任何简单的方法可以返回单个标量或默认值?
此刻我有类似这样的代码示例:
IF (EXISTS (SELECT * FROM Users WHERE Id = @UserId))
SELECT Name FROM Users WHERE Id = @UserId
ELSE
--default value
SELECT 'John Doe'
Run Code Online (Sandbox Code Playgroud)
如何在不使用IF-ELSE的情况下以更好的方式做到这一点?
Mar*_*ith 68
假设名称不可为空并且该名称是Id唯一的,因此最多可以匹配一行.
SELECT
ISNULL(MAX(Name),'John Doe')
FROM
Users
WHERE
Id = @UserId
Run Code Online (Sandbox Code Playgroud)
Mat*_*tzi 23
尝试ISNULL或COALESCE:
SELECT ISNULL((SELECT TOP 1 Name FROM Users WHERE Id = @UserId), 'John Doe')
Run Code Online (Sandbox Code Playgroud)
如果不存在具有此id的用户,则内部选择将不返回任何内容,isnull将解决此情况.
Try this
`SELECT IFNULL(Name,'John Doe') FROM Users WHERE Id = @UserId)`
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
70404 次 |
| 最近记录: |