SQL 服务器 SELECT 金钱为空白 space 而不是 0.00

SQL Server SELECT Money as blank space instead of 0.00

我无法让 table 变量中的值返回为空白而不是 0.00。

Table Setup/Declaration.

        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 我想要一个空白 space ''。我尝试过转换,我尝试过转换,并且在尝试时显示了两个。

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

无论我尝试哪种方式,它都会显示为 0.00

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

如果你想要 '' 即字符,你需要像这样将你的钱转换为 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 而不是 ''。

您不能在同一列中显示 moneychar,因此您别无选择:或者将所有列转换为 varchar,或者保留 [=11] =] 但使用 NULL 而不是 ''.

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)