首页 > SQL Server 中update的小计

SQL Server 中update的小计

导出向导 -->选择数据源 -->选择目的 -->指定表复制或查询:不要使用默认选项,选择“在SQL Server数据库之间复制对象和数据” -->选择要复制的对象:在本页中根据需要选择相应的开关项,对于列约束,必须选择“扩展属性”,若去掉“复制所有对象”

-->

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

转载于:https://www.cnblogs.com/cnmarkao/p/3687398.html

更多相关:

  • 导入数据时,使用默认选项,会丢失主键、约束、默认值等属性,按如下步骤操作:-->导出向导 -->选择数据源 -->选择目的 -->指定表复制或查询:不要使用默认选项,选择“在SQL Server数据库之间复制对象和数据” -->选择要复制的对象:在本页中根据需要选择相应的开关项,对于列约束,必须选择“扩展属性”,若去掉“复制所有对象”...