【问题标题】:Concatenate column values in SQL Server在 SQL Server 中连接列值
【发布时间】:2015-03-26 08:58:55
【问题描述】:

我想从数据库中选择两列(名字和姓氏),将它们组合成一列,然后将它们粘贴到要在数据网格中显示的数据集中。我还需要在它们之间添加一个空格以进行格式化。

我的正常 SQL 语句:

SELECT first_name + ' ' + last_name as userName from Table

我目前的 VB 声明:

strSQL = "SELECT first_name + ' ' + last_name as userName from Table"

当我尝试这样做时,我的应用程序会抛出以下错误:System.Data.SqlClient.SqlException: An object or column name is missing or empty. For SELECT INTO statements, verify each column has a name. For other statements, look for empty alias names. Aliases defined as "" or [] are not allowed. Add a name or single space as the alias name.

编辑:对于那些询问数据库和/或这是否是正确查询的人,如果我按如下方式格式化我的 VB 查询:

strSQL = "SELECT first_name + last_name as userName from Table"

我得到了正确的结果,但是该列看起来像 FirstLast 并且很难阅读。

我猜在如何在 VB 中正确执行此操作方面我缺少一些小东西。谁能给点建议?

我尝试过的事情:

strSQL = "Name = TU1.first_name + ' ' + TU1.last_name"

这会引发相同的错误。不过……

strSQL = "Name = TU1.first_name + '' + TU1.last_name"

给我First'Last的结果

【问题讨论】:

  • 您确定这是引发错误的正确查询吗?它抱怨“选择进入”
  • 您确定它连接到正确的数据库吗?
  • 对您的两个问题都同意。
  • 为了清楚起见,当您连接到同一个数据库并通过 SQL Server Management Studio 运行时,查询运行良好?
  • 是的。请查看我在 OP 中添加的编辑内容。

标签: sql asp.net sql-server vb.net sql-server-2005


【解决方案1】:

使用SPACE()函数排除在SQL中格式化字符串时引用不一致的情况:

strSQL = "SELECT first_name + SPACE(1) + last_name as userName from Table"

话虽如此,这种格式最好留给表示层,而不是数据层。

【讨论】:

  • 效果很好。我知道这一定是我以前从未见过的东西。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-19
  • 2019-01-07
  • 2016-03-01
  • 2013-07-22
  • 2016-04-20
  • 1970-01-01
相关资源
最近更新 更多