日期:2014-05-18  浏览次数:20513 次

sql server 中的类型转换
在数据库中见一个货品信息表
要求是将商品状态定义成 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