假如我通过查询的得到一个字段ID的值有a,b,c,d四种
我想在显示的时候只让a显示为‘空’,其他三种值原样显示能否实现
另外一个问题,假如我一个表T中有A,B,C,D四个字段,当我查询时假如A有变动(例如在Select中用了case,When什么的),这时其他列只能一个一个写出来吗?
对于问题一:就是有case when 做一次排除,楼上的语句即可。
对于问题二:感觉你貌似是想问用了case then之后,还能不能直接用select *,如果是这个问题,那么是能用*的,但是如果你不对使用了case when的A设置别名的话,就会出现两个A列。。。否则,只能一个一个将B、C、D写出来。
对对,就是会出现重名,可能会有两个A列,这咋办,有木有除掉A列的表示其他所有列的方法,除了一个个列出来
@伊夏: 楼下也说了,将处理过的A列进行别名化,然后用*多查一个字字段。否则,别无他法。。
额,还是有办法的。利用sys.tables和sys.columns来构建字段,然后用exec(sqlCommand)来执行动态sql。。。话说,这更复杂了 。
@幻天芒: 哇,虽然听不懂但好厉害的样子,看来确实只能一个个写了,在别处也都是这么说,不过还是谢了!
问题1:SELECT CASE WHEN ID='a' THEN '空' ELSE ID END AS ID FROM T,如果你的空是'',在SQL Server中也可以用COALESCE函数
问题2:有点不清楚你到底想表达什么意思。如果是通过CASE WHEN做判断写一些逻辑,通常是省不掉各种情况都判断一下的
1、楼上答了基本够了。
2、你就是想偷个懒不写字段名是吧?可以用类似这样的
Select case when A='a' then '' else A END as OtherA, * from table,
只是这样就有5个字段,而不是4个字段了。
然后在前台自己处理。
但是如果只为了省事而用Select * from Table,这本身就是不太推荐的做法。