SQL SERVER-Concat空数值列
我有这张桌子SQL SERVER-Concat空数值列,sql,sql-server,Sql,Sql Server,我有这张桌子 CREATE TABLE [name].[tblRange] ( [RangeId_PK] numeric(6, 0) IDENTITY(1, 1) NOT NULL, [Lower] numeric(18, 2) NOT NULL, [Upper] numeric(18, 2) NULL ) 我想要concat Lower和Upper,但如果Upper包含NULL值,它总是给我NULL 这是我的疑问: SELECT CAST(Lower AS VARCHAR(50
CREATE TABLE [name].[tblRange]
(
[RangeId_PK] numeric(6, 0) IDENTITY(1, 1) NOT NULL,
[Lower] numeric(18, 2) NOT NULL,
[Upper] numeric(18, 2) NULL
)
我想要concat Lower和Upper,但如果Upper包含NULL值,它总是给我NULL
这是我的疑问:
SELECT CAST(Lower AS VARCHAR(50)) + '-' + CAST(Upper AS VARCHAR(50))
FROM name.tblRange
我无法使用以下查询,因为它将给出此错误(SQL Server数据库错误:将数据类型varchar转换为数字时出错。
)
请注意,我不能使用ISNULL(上限,0)
,因为这是一个上限(不能是0)
如何解决此问题?问题是ISNULL获取两种不同类型的参数。切换CAST和ISNULL语句:
SELECT CAST(Lower AS VARCHAR(50)) + '-' + ISNULL(CAST(Upper AS VARCHAR(50)), '') FROM name.tblRange
问题是ISNULL获取两种不同类型的参数。切换CAST和ISNULL语句:
SELECT CAST(Lower AS VARCHAR(50)) + '-' + ISNULL(CAST(Upper AS VARCHAR(50)), '') FROM name.tblRange
通过使用
isnull
,您已经走上了正确的道路
您可以使用类似的方法来使用正确的数据类型:
当下限
和上限
为空时,此选项将0
、999
显示为值:
SELECT cast(isnull(Lower, 0) AS VARCHAR(50))
+ '-'
+ cast(isnull(Upper, 999) AS VARCHAR(50))
FROM name.tblRange
SELECT isnull(cast(Lower AS VARCHAR(50)), '')
+ '-'
+ isnull(cast(Upper AS VARCHAR(50)), '')
FROM name.tblRange
或者,当lower
和upper为null
时,此项仅显示破折号:
SELECT cast(isnull(Lower, 0) AS VARCHAR(50))
+ '-'
+ cast(isnull(Upper, 999) AS VARCHAR(50))
FROM name.tblRange
SELECT isnull(cast(Lower AS VARCHAR(50)), '')
+ '-'
+ isnull(cast(Upper AS VARCHAR(50)), '')
FROM name.tblRange
通过使用isnull
,您已经走上了正确的道路
您可以使用类似的方法来使用正确的数据类型:
当下限
和上限
为空时,此选项将0
、999
显示为值:
SELECT cast(isnull(Lower, 0) AS VARCHAR(50))
+ '-'
+ cast(isnull(Upper, 999) AS VARCHAR(50))
FROM name.tblRange
SELECT isnull(cast(Lower AS VARCHAR(50)), '')
+ '-'
+ isnull(cast(Upper AS VARCHAR(50)), '')
FROM name.tblRange
或者,当lower
和upper为null
时,此项仅显示破折号:
SELECT cast(isnull(Lower, 0) AS VARCHAR(50))
+ '-'
+ cast(isnull(Upper, 999) AS VARCHAR(50))
FROM name.tblRange
SELECT isnull(cast(Lower AS VARCHAR(50)), '')
+ '-'
+ isnull(cast(Upper AS VARCHAR(50)), '')
FROM name.tblRange
如果它包含空值,那么您的上限是多少?将空值设为ISNULL(上限“”)或NULL ISNULL(上限“”)或您想要的任何值。它不仅必须是0。如果它包含NULL值,那么您的上限是多少?将空设置为ISNULL(上限“”)或NULL ISNULL(上限“”)或您想要的任何内容。它不仅必须是0。