关于SQL语句的问题!(把两列合成一列)

时间:2022-02-22 10:34:18
我在进行数据查询中遇到了一个问题,我想把两列或多列合成一列在DATAGRID中显示出来,其中这些列中有一列或多列的值是空的,但合起来后不会为空。
    我写的SQL语句如下。(只是个简单的例子,实际中要难些)
SELECT dbo.H_Code.SN, dbo.Company.Name + dbo.Firm.Name AS Expr1
FROM dbo.H_Code LEFT OUTER JOIN
      dbo.Company ON dbo.H_Code.ID_C = dbo.Company.ID_C LEFT OUTER JOIN
      dbo.Firm ON dbo.H_Code.ID_F = dbo.Firm.ID_F
WHERE (dbo.H_Code.ID = 'X002')
      (说明一下:在X002中的H_Code.ID_F的值不为空,而H_Code.ID_C中的值为空)
     现在我想把Company.Name和Firm.Name合成Expr1显示出来,但值为Firm.Name的值。(再说一下,这是个小例子,我想晓得怎么实现我的要求,而不是解决这个例子的其它捷径)
       望高手指点!谢谢!!

7 个解决方案

#1


>>>>想把Company.Name和Firm.Name合成Expr1显示出来,但值为Firm.Name的值?????

如果你要同时显示Firm.Name的话,简单的方法是再加一列

SELECT dbo.H_Code.SN, dbo.Firm.Name, dbo.Company.Name + dbo.Firm.Name AS Expr1

#2


在sqlserver中合并字段用+号 如上所示
在oracle中合并字段用 || 号
select columns1 || columns2 as columns3 from tablenames

#3


谢谢!我只要求合成一列就可以了,想把Company.Name和Firm.Name合成Expr1显示出来,但值为Firm.Name的值!其实我实际使用中Company.Name和Firm.Name都有可能有值,我的结果就是这两个的合并值。
   我用的是SQL SERVER 用的字段连接符是用的+号,但是使用中出现了问题,只要Company.Name和Firm.Name有一个为空,那么它们的合并值也为空了。就如上所说我想要得出的结果是Firm.Name,但实际显示出的结果为空!!

   望指点一下!!谢了!

#4


在合并时候用:
isnull(field_A,'') + isnull(field_B,'') as field_C

#5


同意楼上的,再麻烦如果根据字段的直转化
为不同的直,用case处理

#6


SELECT dbo.H_Code.SN, rtrim(ltrim(isnull(dbo.Company.Name,' ') + isnull(dbo.Firm.Name,' '))) AS Expr1
FROM dbo.H_Code LEFT OUTER JOIN
      dbo.Company ON dbo.H_Code.ID_C = dbo.Company.ID_C LEFT OUTER JOIN
      dbo.Firm ON dbo.H_Code.ID_F = dbo.Firm.ID_F
WHERE (dbo.H_Code.ID = 'X002')

#7


谢谢!我已实现了,就是按楼上的这种方法!真的很感谢psxfghost(哈哈)!!!

#1


>>>>想把Company.Name和Firm.Name合成Expr1显示出来,但值为Firm.Name的值?????

如果你要同时显示Firm.Name的话,简单的方法是再加一列

SELECT dbo.H_Code.SN, dbo.Firm.Name, dbo.Company.Name + dbo.Firm.Name AS Expr1

#2


在sqlserver中合并字段用+号 如上所示
在oracle中合并字段用 || 号
select columns1 || columns2 as columns3 from tablenames

#3


谢谢!我只要求合成一列就可以了,想把Company.Name和Firm.Name合成Expr1显示出来,但值为Firm.Name的值!其实我实际使用中Company.Name和Firm.Name都有可能有值,我的结果就是这两个的合并值。
   我用的是SQL SERVER 用的字段连接符是用的+号,但是使用中出现了问题,只要Company.Name和Firm.Name有一个为空,那么它们的合并值也为空了。就如上所说我想要得出的结果是Firm.Name,但实际显示出的结果为空!!

   望指点一下!!谢了!

#4


在合并时候用:
isnull(field_A,'') + isnull(field_B,'') as field_C

#5


同意楼上的,再麻烦如果根据字段的直转化
为不同的直,用case处理

#6


SELECT dbo.H_Code.SN, rtrim(ltrim(isnull(dbo.Company.Name,' ') + isnull(dbo.Firm.Name,' '))) AS Expr1
FROM dbo.H_Code LEFT OUTER JOIN
      dbo.Company ON dbo.H_Code.ID_C = dbo.Company.ID_C LEFT OUTER JOIN
      dbo.Firm ON dbo.H_Code.ID_F = dbo.Firm.ID_F
WHERE (dbo.H_Code.ID = 'X002')

#7


谢谢!我已实现了,就是按楼上的这种方法!真的很感谢psxfghost(哈哈)!!!