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”
虽然前面的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 将截断字符串或二进制数据
因为我得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是中文版的(应该说字符集是中文的比较准确),中文的一个字符等于两个字节。