Sql 将数据类型varchar转换为数字时出错(新手)

Sql 将数据类型varchar转换为数字时出错(新手),sql,Sql,我是新手,所以温柔一点。我运行这个脚本是为了更新一个列,该列是空白的,带有108。该列设置为数值(18,0)。为什么我会收到这个信息,我如何才能克服它 Update HL7ManagerRecords set ScheduleID = 108 where ScheduleID ='' 字段可能为空 Update HL7ManagerRecords set ScheduleID = 108 where ScheduleID is null 列ScheduleID设置为numeric(18,0

我是新手,所以温柔一点。我运行这个脚本是为了更新一个列,该列是空白的,带有108。该列设置为
数值(18,0)
。为什么我会收到这个信息,我如何才能克服它

Update HL7ManagerRecords
set ScheduleID = 108
where ScheduleID =''

字段可能为空

Update HL7ManagerRecords
set ScheduleID = 108
where ScheduleID is null 

ScheduleID
设置为
numeric(18,0)
,但您尝试查找
ScheduleID
等于临时字符串的所有记录:
其中ScheduleID='

改为使用
为NULL

Update HL7ManagerRecords
set ScheduleID = 108
where ScheduleID IS NULL 

您需要发布表的架构。我假设ScheduleID是一个数字。由于ScheduleID是一个数字,因此它不是空的,因为它包含一个数字。我的假设是它是
null
,因为如果您创建一个
numeric
列,而不指定它是否为
null
,则这是默认值。所以你需要做的是

Update HL7ManagerRecords
set ScheduleID = 108
where ScheduleID is null

如果出于某种原因,您需要采用数字数据类型并将其视为空白字符串,或者将其更改为具有特定值的字符串,则可以使用类似于ISNULL(ScheduleID“”)=''的内容。正如其他人所说,“isnull”可以很好地工作,这是另一种方式。

注意,您应该标记您正在使用的SQL的“风格”。“SQL”包括MySQL、MSSQL、Sybase等。。。此外,以下答案是正确的;当您执行
ScheduleID=''
时,您正在将ScheduleID与字符串进行比较。在ScheduleID为NULL的地方尝试
@JohnMolina很高兴它这样做了!