SQL返回值如果不为null,则返回零

时间:2017-07-02 08:00:43

标签: sql null return-value

如果这个简单的查询没有返回结果(NULL),它会在一行中返回零,这是正确的。如果有一些结果,查询将返回错误512。

如何修改它以返回找到的值,如果没有则返回“0”?

select ISNULL( (select Name from NAMES
left join ADDRESS on NAMES.Name = ADDRESS.Person
where
NAMES.Name = myinput
) , 0) as Name

2 个答案:

答案 0 :(得分:1)

好吧,如果你的内部查询返回多个值,你应该得到一个错误,因为 webClient = new WebClient(BrowserVersion.CHROME); webClient.getOptions().setJavaScriptEnabled(true); webClient.getOptions().setRedirectEnabled(true); webClient.getOptions().setThrowExceptionOnScriptError(false); webClient.getOptions().setCssEnabled(false); webClient.getOptions().setUseInsecureSSL(true); webClient.getOptions().setThrowExceptionOnFailingStatusCode(false); webClient.getCookieManager().setCookiesEnabled(true); webClient.getCache().setMaxSize(0); final HtmlPage loginpage = webClient.getPage(this.login_url); List<HtmlForm> forms_from_login_page = loginpage.getForms(); HtmlForm form_from_login_page = forms_from_login_page.get(0); String token = get__RequestVerificationToken(loginpage.asXml()); WebRequest web_req = loginpage.getWebResponse().getWebRequest(); web_req.setAdditionalHeader("__RequestVerificationToken", token); HtmlTextInput userNameTextField = loginpage.getHtmlElementById("user-input"); HtmlPasswordInput passwordTextField = loginpage.getHtmlElementById("password-input"); userNameTextField.setValueAttribute(this.profile_id); passwordTextField.setValueAttribute(this.password); DomElement button = loginpage.getElementById("sign-in-btn"); button.setAttribute("type", "submit"); landing_page = button.click(); 只能处理一个值。 我建议使用不同的方法。代码较长,但它会为您提供从查询返回的任意行数的正确结果:

isnull

使用内部查询作为cte只允许我写一次。
使用;WITH CTE AS ( SELECT Name FROM NAMES LEFT JOIN ADDRESS ON NAMES.Name = ADDRESS.Person WHERE NAMES.Name = @myinput ) SELECT Name FROM CTE UNION ALL SELECT '0' WHERE NOT EXISTS(SELECT 1 FROM CTE) 会导致NOT EXISTS中的第二个查询仅在cte未返回任何结果时返回union。否则,您将从cte。

获得结果

答案 1 :(得分:1)

将主查询包装到CTE中,现在

0
相关问题