在sql server 2008 r2中的情况下的问题 [英] Problem in case stmt in sql server 2008 r2

查看:67
本文介绍了在sql server 2008 r2中的情况下的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,



我正在写一个存储过程,

我正在使用案例stmt ..



代码:



Hi guys,

I was writing a stored procedure,
where i'm using case stmt..

code:

CASE    WHEN CONVERT(VARCHAR(11), u.Unit_Name) = 'FLARE STACK'
                    THEN 'F.S.'+ reverse( substring ( reverse(u.Unit_Name), 1,2))
                    WHEN CONVERT(VARCHAR(14), u.Unit_Name) != 'MERCEDES TRUCK' OR CONVERT(VARCHAR(11), u.Unit_Name) != 'FLARE STACK' THEN u.Unit_Name
                    WHEN CONVERT(VARCHAR(14), u.Unit_Name) = 'MERCEDES TRUCK'
                    THEN 'M.T.'+ reverse( substring ( reverse(u.Unit_Name), 1,4))
                    END AS 'Unit_Name'





结果是两件以上的结果但

不是为了最后一种情况......'梅赛德斯卡车'然后'MT'



任何人都可以帮助我.....如何解决它。



谢谢



the result is getting for above two cases but
not for the last case... 'MERCEDES TRUCK' THEN 'M.T.'

can anyone plz help me.....How to solve it.

Thanks

推荐答案

你的案例
WHEN CONVERT(VARCHAR(14), u.Unit_Name) != 'MERCEDES TRUCK' OR CONVERT(VARCHAR(11), u.Unit_Name) != 'FLARE STACK' THEN u.Unit_Name

因OR而被击中。将其更改为AND。

is being hit because of the OR. Change it to AND.








检查这个....





Hi,


Check this....


CASE    
	WHEN	CONVERT(VARCHAR(11), UPPER(u.Unit_Name)) = 'FLARE STACK'
		THEN	'F.S.'+ reverse( substring ( reverse(u.Unit_Name), 1,2))
	WHEN	CONVERT(VARCHAR(14), u.Unit_Name) = 'MERCEDES TRUCK'
		THEN 'M.T.' + reverse( substring ( reverse(u.Unit_Name), 1,4))
	/*WHEN	(CONVERT(VARCHAR(14), UPPER(u.Unit_Name)) != 'MERCEDES TRUCK' 
						OR 
			CONVERT(VARCHAR(11), UPPER(u.Unit_Name)) != 'FLARE STACK' )
		THEN u.Unit_Name*/
	ELSE u.Unit_Name
END AS 'Unit_Name'







希望这会对你有所帮助。 />


干杯




Hope this will help you.

Cheers


这篇关于在sql server 2008 r2中的情况下的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆