SQL Server SELECT Money作为空白而不是0.00

时间:2017-11-02 14:16:23

标签: sql-server sql-server-2005

我无法让我的值在表变量中显示为空白而不是0.00。

表格设置/声明。

        DECLARE @PolicyCoverages TABLE (
        CoverageType varchar(100),
        ScheduleLimit money,
        BlanketLimit money,
        Deductible money,
        Premium money
    )

    INSERT INTO @PolicyCoverages (CoverageType, ScheduleLimit, BlanketLimit, Deductible, Premium)    
    SELECT  'Words for a description',
            '10000.00', 
            '0.00', 
            '2500.00', 
            '142.50'

一旦所有数据到位(有许多选择引入数据)我想提取具体信息,如下所示。

SELECT CoverageType,
       CASE WHEN ScheduleLimit < 0 THEN '' ELSE ScheduleLimit END AS ScheduleLimit,
       CASE BlanketLimit WHEN '0.00' THEN '' ELSE BlanketLimit END AS BlanketLimit,
       Deductible, 
       Premium 
    FROM @PolicyCoverages
    WHERE (ScheduleLimit > '0.00') OR (BlanketLimit > '0.00')

我不想显示0.00我想要一个空格&#39;&#39;。我尝试过皈依者,我尝试过施法,并且两次尝试时都显示出来。

WHEN CAST(ScheduleLimit as varchar(10)) < 0 THEN ''
WHEN Schedulelilmit < 0 THEN CONVERT(varchar(10), '')

无论我尝试哪种方式,它都会以0.00

结束

3 个答案:

答案 0 :(得分:0)

使用SPACE(n)函数获取空格键。 'n'是一个整数

答案 1 :(得分:0)

如果你想要&#39;&#39;这是角色,你需要将你的钱兑换成varchar:

SELECT CoverageType,
       CASE WHEN ScheduleLimit < 0 THEN '' ELSE cast(ScheduleLimit as varchar(30)) END AS ScheduleLimit,
       CASE BlanketLimit WHEN 0 THEN '' ELSE cast(BlanketLimit as varchar(30)) END AS BlanketLimit,
       Deductible, 
       Premium 
    FROM @PolicyCoverages
    WHERE (ScheduleLimit > '0.00') OR (BlanketLimit > '0.00')

如果您不希望money成为varchar,则应使用NULL代替&#39;&#39;

您无法在同一列中显示moneychar,因此您无其他选择:或者您将所有列转换为varchar,或保留money但请使用NULL代替&#39;&#39;。

答案 2 :(得分:0)

Sean Lange得到了它!显示NULL确实纠正了我的问题。前端(我无法控制)将NULL值显示为空白,因此将其设置为NULL会更正所有内容。

SELECT CoverageType,
       CASE ScheduleLimit WHEN 0 THEN NULL ELSE ScheduleLimit END AS ScheduleLimit,
       CASE BlanketLimit WHEN 0 THEN NULL ELSE BlanketLimit END AS BlanketLimit,
       Deductible, 
       Premium 
    FROM @PolicyCoverages
    WHERE (ScheduleLimit > 0) OR (BlanketLimit > 0)