sql server error =当子查询跟随=,!=,<,<=,>,> =或将子查询用作表达式时,不允许这样做

时间:2019-05-24 12:07:53

标签: sql sql-server

我的代码有问题。

我使用此代码在sql服务器上创建视图:

SELECT
(SELECT FirstNameD + ' ' + LastNameD AS Expr1
 FROM   dbo.UsersDatas) AS UsersFullName,
 PhoneNumberD, EmailAddressD, UserNameD
FROM dbo.UsersDatas AS UsersDatas_1   

并在我的c#应用程序中使用此视图。

在我的C#应用​​程序中设置了两行之后,我从Visual Studio中得到了此错误:

  

System.Data.Entity.Core.EntityCommandExecutionException:'一个错误   从商店提供商的数据读取器读取数据时发生。见   内部异常以获取详细信息。'

我的C#代码是:

private void SetDataGridViewDatasMethod()
{
    var Query = from MU in DataBaseDataD.VW_UsersDatasView
    select MU;
    var UsersDataD = Query.ToList();
    UsersInfoDataGridView.ItemsSource = UsersDataD;
}

我在互联网上搜索了很多相关内容,但是找不到任何解决方案,请您帮我解决这个问题?

2 个答案:

答案 0 :(得分:4)

如果您要全名,可以这样, 无需内部查询

 SELECT
FirstNameD + ' ' + LastNameD  AS UsersFullName,
 PhoneNumberD, EmailAddressD, UserNameD
FROM dbo.UsersDatas 

答案 1 :(得分:0)

正如Shantanu所说-不需要内部查询。 而且,可能不希望使用“ +”运算符,而是要使用CONCAT

SELECT CONCAT(FirstNameD, ' ', LastNameD)  AS UsersFullName,
 PhoneNumberD, EmailAddressD, UserNameD
FROM dbo.UsersDatas 

或者,如果您使用的是SQL Server 2017,则也可以使用CONCAT_WS

SELECT CONCAT_WS(' ', FirstNameD, LastNameD)  AS UsersFullName,
 PhoneNumberD, EmailAddressD, UserNameD
FROM dbo.UsersDatas

+和CONCAT之间的主要区别在于,当输入之一为NULL时,它们的行为方式。