MS SQL 2005存储过程 [英] MS SQL 2005 Stored Procedure

查看:81
本文介绍了MS SQL 2005存储过程的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要搜索一个名为"Diopter"的Float变量,并寻找一个小数点.如果小数点不存在,我需要附加一个".0".这是一个代码段
开始

I need to search a Float variable named ''Diopter'' and look for a decimal point. If the decimal point does not exist I need to append a ''.0'' Here is a code snippet
Begin

    SELECT TOP 1
	WaferID,
	TrayID,
	    CASE UPPER(FixedOrPower)
		WHEN ''POWER'' THEN RTRIM(STR(Diopter)) + ''D''
		ELSE ''#'' + FixedPinNumber
	    END AS DioptorOrFixed,
	    RTRIM(REPLACE(CONVERT(VARCHAR(8), ProcessDateTime, 2),''.'','''')AS          ProcessDate,
	    RTRIM(CONVERT(VARCHAR(5), ProcessDateTime, 108)) AS ProcessTime,
	    EquipmentID AS EquipmentNumber,
	    CavityNumber,
	    PolyCNumber1,
	    PolyCNumber2,
	    PinSerialNumber,
	    HolderID,
	    OperatorEmployeeNumber AS OperatorID,
	    SetupTechEmployeeNumber + ''     .'' AS SetupTechID, 
            PinRadius1,
	    PinRadius2,
	    WaferRadius1,
	    WaferRadius2
	FROM dbo.TBL_ProcessedWaferTray
	WHERE TrayID = @TrayID
	ORDER BY TrayID, ProcessDateTime DESC
end



[edit]添加了代码块-OriginalGriff [/edit]



[edit]Code block added - OriginalGriff[/edit]

推荐答案

我不是SQL专家,但我认为这可能有效(或者至少让您使用正确的轨道):

I''m no sql expert, but I think this might work (or at least set you on the right track):

CASE UPPER(FixedOrPower)
    WHEN 'POWER' THEN CASE CHARINDEX('.', RTRIM(STR(Diopter))
                          WHEN 0 THEN RTRIM(STR(Diopter)) + '.0D'
                          ELSE RTRIM(STR(Diopter)) + 'D'
                      END
    ELSE '#' + FixedPinNumber
END AS DioptorOrFixed


查看以下内容看看是否有帮助.
Look at the following and see if it helps.
DECLARE @d AS FLOAT = 72
SELECT
    @d,
    CAST(@d AS VARCHAR(10)) AS StingVal,
    CHARINDEX('.', CAST(@d AS VARCHAR(10))) AS Position,
    CASE
        WHEN CHARINDEX('.', CAST(@d AS VARCHAR(10))) = 0
            THEN CAST(@d AS VARCHAR(10)) + '.0D'
            ELSE CAST(@d AS VARCHAR(10)) + 'D'
    END AS DesiredVal


该代码在2008年有效,但在2005年也应该有效.


The code works in 2008 but should also work in 2005


那根本没有道理.
浮点值没有小数点-当您将它们转换为字符串时,它们只会得到一个小数点.
如果您的意思是如果字符串不包含小数点,则添加".0",那么您需要的代码类似于:
That makes no sense at all.
Float values do not have a decimal point - they only get one when you convert them to a string.
If what you mean is that if a string does not contain a decimal point then add ".0", then the code you need is similar to:
IF CHARINDEX('.', @DIOPTER) <= 0
   BEGIN
   set @DIOPTER = RTRIM(@DIOPTER) + '.0'
   END


这篇关于MS SQL 2005存储过程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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