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

急!如何让SQLServer自动截取过长字符串?谢谢!
各位大侠:
        我的字段为varchar(20),   我希望,在insert时,如果插入的字符串过长,SQLServer能自动截取字符串的前20个字符存入,请问如何实现?  
                               

                                 
                                    万分感谢!

------解决方案--------------------
create table tt(nId int identity(1,1) primary key, cola nvarchar(20));

insert tt values(left( '1234567890asdfghjklzxcvbnmsdfg ',20));
insert tt values(left( '1234567890 ',20));
insert tt values(left(null,20));

select * from tt

----------------------------
nId cola
----------- --------------------
2 1234567890asdfghjklz
3 1234567890
4 NULL

(3 row(s) affected)
------解决方案--------------------
看SQLSERVER关于SET ANSI_WARNINGS的描述,字符串的截断应该是与该项设置有关.请楼主在两台机器(xp,win2003)上分别运行一下下面的代码,比较返回的结果是否相同:
select databaseproperty(N '数据库名称 ',N 'IsAnsiWarningsEnabled ')
结果含义:
0-表示OFF
1-表示ON