我写的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
如果你要同时显示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
在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,但实际显示出的结果为空!!
望指点一下!!谢了!
我用的是SQL SERVER 用的字段连接符是用的+号,但是使用中出现了问题,只要Company.Name和Firm.Name有一个为空,那么它们的合并值也为空了。就如上所说我想要得出的结果是Firm.Name,但实际显示出的结果为空!!
望指点一下!!谢了!
#4
在合并时候用:
isnull(field_A,'') + isnull(field_B,'') as field_C
isnull(field_A,'') + isnull(field_B,'') as field_C
#5
同意楼上的,再麻烦如果根据字段的直转化
为不同的直,用case处理
为不同的直,用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')
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
如果你要同时显示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
在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,但实际显示出的结果为空!!
望指点一下!!谢了!
我用的是SQL SERVER 用的字段连接符是用的+号,但是使用中出现了问题,只要Company.Name和Firm.Name有一个为空,那么它们的合并值也为空了。就如上所说我想要得出的结果是Firm.Name,但实际显示出的结果为空!!
望指点一下!!谢了!
#4
在合并时候用:
isnull(field_A,'') + isnull(field_B,'') as field_C
isnull(field_A,'') + isnull(field_B,'') as field_C
#5
同意楼上的,再麻烦如果根据字段的直转化
为不同的直,用case处理
为不同的直,用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')
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(哈哈)!!!