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