sql server 中的类型转换,该如何解决
sql server 中的类型转换
在数据库中见一个货品信息表
要求是将商品状态定义成 bit型 设置默认约束表示可售出
bit类型设置默认值为 1 时 表中显示的是true
想要表中显示‘可售出’这几个字
我开始写的错误语句是这样的:
M_State bit constraint DF_Mstate default '可出售'
向表中写入数据时报错:不能将varchar值‘可售出’转换成bit类型
有人告诉我用程序转换:
if(bitState)
strState='可售出'
可我不知道这段应该放在sql语句的那个位置,怎样才能让它有用
麻烦各位大仙不吝指点
------解决方案--------------------
在数据库中见一个货品信息表
要求是将商品状态定义成 bit型 设置默认约束表示可售出
bit类型设置默认值为 1 时 表中显示的是true
想要表中显示‘可售出’这几个字
我开始写的错误语句是这样的:
M_State bit constraint DF_Mstate default '可出售'
向表中写入数据时报错:不能将varchar值‘可售出’转换成bit类型
有人告诉我用程序转换:
if(bitState)
strState='可售出'
可我不知道这段应该放在sql语句的那个位置,怎样才能让它有用
麻烦各位大仙不吝指点
------解决方案--------------------
- SQL code
go create table #t( M_State bit constraint DF_Mstate default 1 ) insert #t select 1010 union all select 0 union all select 0 select * from #t select case when M_State=1 then '可出售' else '不可出售' end as M_State from #t --你的字段是bit类型,'可出售'是varchar类型,这是不能转换过去的,除非是像这样的‘1’或者‘0’这样的字符串 /* M_State 可出售 不可出售 不可出售 */
------解决方案--------------------
这个是个概念性的问题啊,你定义的bit数据类型,存储的是bit数据类型,你要让表显示字符的话你不能简单的使用窗口中的打开数据库,因为那种方式打开是按照bit数据类型的默认方式打开的,你可以使用查询语句使得查询时显示成字符串。
- SQL code
--假如你的表名为 tbl,只显示这个状态位 select case when M_State = 1 then '可出售' else '不可出售' end as M_State from tbl; go