SQL Server 中update的小计

update中涉及到多个表的:

1.update TableA set a.ColumnC=b.ColumnC from TableA a inner join TableB b on a.ColumnD=b.ColumnD

这样是不对的,报错如下:

消息 4104,无法绑定由多个部分组成的标识符 “xxxx”

image

虽然前面的TableA和后面的TableA是同一个表,正确语法如下(我用的是SQL Server 2008测试的结果):

update TableA set ColumnC=b.ColumnC from TableA a inner join TableB b on a.ColumnD=b.ColumnD

2.update TableA set ColumnC=b.ColumnC from TableA a inner join TableB b on a.ColumnD=b.ColumnD

还是这个update语句,如下消息:

消息 8152 将截断字符串或二进制数据

image

因为我得TableA是这样生成的:

select

           column1,

          ‘ ‘  column2

into TableA

from  TableC

 

具体的column2的字符类型好像是varchar,不知道系统为什么这样判断?length是1,所以update时就出错了,就好像把一根20cm的筷子放到只有10cm的易拉罐中一样,只好把筷子截断10cm。

3.有时要查看表中所有列的数据类型,可以使用sp_help

可以执行的几种方式:

     sp_help

     sp_help  数据库对象

    sp_help 数据类型

我使用sp_help TableA

开始还想怎么nvarchar(255)的length是510啊?length是以字节为单位的。我使用的SQL Server是中文版的(应该说字符集是中文的比较准确),中文的一个字符等于两个字节。

image

posted @ 2014-04-24 21:35  cnmarkao  阅读(378)  评论(0编辑  收藏  举报