问一个弱弱的问题,关于UPDATE 我在Sql Server 2000上是可以的,你试着把你表中的数据写出几个来,让大家试试看 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我执行这句不出问题啊!UPDATE 表A SET 字段1 = left(字段2,18) WHERE 字段2 IS NOT NULL AND 字段2<>'' 如果是nvarchar,应该没问题,估计是有汉字之类 我测试了一下,left 函数取的是字符的个数,而varchar型的字段长度是指存储长度,例如字符串“0123456789我爱北京啊”是15个字符,占用20个字节。left('0123456789我爱北京啊',12) = '0123456789我爱' 而'0123456789我爱' 是14个字节 NewQger(Q哥):你将前面的数字个数变为奇数个就出错了啊,截断汉字了,呵呵 用nvarchar类型的长度是指字符的个数,改成这个类型就没问题了 left取的是左边的字符的个数,奇偶都一样 哦,我是说varchar类型的时候的确会出错 DECLARE @AA AS VARCHAR(10)SET @AA = '012456789中华人民共和国'SELECT LEFT(@AA,12)返回了 '0123456789'为什么会这样!!!!!!!!!!!!!!! DECLARE @AA AS VARCHAR(10) --@AA 才10 在表设计中 varchar型的字段长度是指存储长度 nvarchar类型的长度是指存储字符串的长度一个varchar(20)的可以存放20个单字节字符,或10个双字节字符,一个nvarchar(20)类型的可以存放20个字符不管是单字节字符还是双字节字符。拼音字母,阿拉伯数字,半角的符号是单字节字符,汉字和全角符号是双字节字符。left类字符串函数操作的是字符个数而不是字符的存储长度。 to : baso1623(baso) DECLARE @AA AS VARCHAR(10) ----你在这设长度为10 在付值时已经被截取了SET @AA = '012456789中华人民共和国'select @AA --将返回 '0123456789'SELECT LEFT(@AA,12) --当 @AA 的字符个数小于给定的12时取全部字符 实践证明 VARCHAR 长度不 10无法放入5个以上汉字——————————————————虽然分很少,还是结贴吧,谢谢大家:) 日期判断的小问题? LEFT JOIN以后记录数变少了 将数据库的查询结果 用游标 一行一行的导出EXCEL表 想做数据库这块,相关人士请帮忙!谢谢 求两条SQL语句 关于raiserror的问题 请教:可否控制ID的起始点(不重1开始) 让数据库中的各个表能够产生n行随机的数据??? 求一SQL语句,大家帮帮忙 如何用SQL Server的桌面版开发单机版的应用程序 动态sql 问题? sql2000开发人员版是否可以当企业版使用?
UPDATE 表A SET 字段1 = left(字段2,18) WHERE 字段2 IS NOT NULL AND 字段2<>''
SET @AA = '012456789中华人民共和国'
SELECT LEFT(@AA,12)返回了 '0123456789'为什么会这样!!!!!!!!!!!!!!!
一个varchar(20)的可以存放20个单字节字符,或10个双字节字符,一个nvarchar(20)类型的可以存放20个字符不管是单字节字符还是双字节字符。拼音字母,阿拉伯数字,半角的符号是单字节字符,汉字和全角符号是双字节字符。
left类字符串函数操作的是字符个数而不是字符的存储长度。
DECLARE @AA AS VARCHAR(10) ----你在这设长度为10 在付值时已经被截取了
SET @AA = '012456789中华人民共和国'
select @AA --将返回 '0123456789'
SELECT LEFT(@AA,12) --当 @AA 的字符个数小于给定的12时取全部字符
无法放入5个以上汉字
——————————————————
虽然分很少,还是结贴吧,谢谢大家:)