--问题描述
-- output format : Lastname,FirstName MiddleName < _,_ _ >
--1.如果没有FirstName MiddleName 不要有逗号。e.g. Lastname
--2.如果没有FirstName,逗号后不要有空格。e.g. Lastname,MiddleName
--问题:不要用case when 有其他的方法可以实现吗?
declare @t table(FirstName varchar(50),MiddleName varchar(50),FamilyName varchar(50))
insert into @t
select 'FirstName','MiddleName','LastName' union all
select 'FirstName','','LastName' union all
select '','MiddleName','LastName' union all
select 'FirstName','MiddleName','' union all
select 'FirstName','','' union all
select '','MiddleName','' union all
select '','','LastName'
select
LTRIM(Replace(case when (ISNULL(MiddleName, '')='' and ISNULL(FirstName, '')='') or ISNULL(FamilyName, '')='' then ISNULL(FamilyName, '') else ISNULL(FamilyName, '') +',' end + case when ISNULL(FirstName, '')='' then ISNULL(FirstName, '') else ISNULL(FirstName, '') + ' ' end + ISNULL(MiddleName, ''), '', ''))
as Fullname
from @t
解决方案 »
- copy本表数据
- 如何知道数据库中某个表带有触发器?有几种方法可以知道?
- 这样的SQL语句在Access中怎么实现...高分求救..符合就给分....
- 表建立索引时的怪事?
- 有没有深圳的朋友,明天要去地王大厦附近,有没有合适的酒店信息,谢谢
- 数据库备份还原后对于有10万条左右的表不能进行修改这是为什么?
- 高手进,数据更新问题(高分求教)
- 高分求一高效sql查询,要求比较高。
- sql server中我想得到某个表刚新增加的记录的ID,大家讨论一下哪种方式最好??
- 一个菜问题:用什么命令可以在SQLServerQueryAnalyzer窗口中列出数据库中的所有表。
- 动态select文的处理疑惑
- 这个存储过程怎么老错误啊!郁闷!
可以簡化一下case判斷
恩 那个也是抄的,应该是replace的参数吧。
應該是這樣select
isnull(nullif(ISNULL(FamilyName, ''),'')+isnull(nullif('',ISNULL(MiddleName, '')+ ISNULL(FirstName, ''))+',',''),'')
+
isnull(nullif(ISNULL(FirstName, ''),'')+isnull(nullif('',ISNULL(MiddleName, ''))+' ',''),'')
+
ISNULL(MiddleName, '')as Fullname
from @t
select * from tb where condition1...
union all
select * from tb where condition2...
union all
select * from tb where condition3...
Ltrim(Isnull(Stuff(Isnull(FamilyName, '')+','+Isnull(FirstName, ''),PATINDEX('[,]%',Isnull(FamilyName, '')+','+Isnull(FirstName, '')),1,''),
Isnull(Stuff(Isnull(FamilyName, '')+','+Isnull(FirstName, '')+' '+Isnull(MiddleName, ''),PATINDEX('%[,]',Isnull(FamilyName, '')+','+Isnull(FirstName, '')+' '+Isnull(MiddleName, '')),1,''),Isnull(FamilyName, '')+','+Isnull(FirstName, ''))
)+' '+Isnull(MiddleName, ''))
as Fullname
from @t