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
而不是 ''。
您不能在同一列中显示 money
和 char
,因此您别无选择:或者将所有列转换为 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)
我无法让 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
而不是 ''。
您不能在同一列中显示 money
和 char
,因此您别无选择:或者将所有列转换为 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)