在插入或者更新数据库时,如何自动截断字符串?

realljx 2004-12-24 09:48:07
很多的时候 SQL Server会返回一个错误 说是将截断字符串,可是它却没有截断字符串,而是导致事物失败?

请问:如题。可否设置连接或者命令 在执行操作的过程中 能够自动截断超长的字符串?
...全文
176 点赞 收藏 19
写回复
19 条回复
Truly 2004年12月24日
而切我没有办法知道目标字段的大小。


--》EXEC sp_columns @table_name = 'customers',@column_name='companyName'
回复 点赞
marvelstack 2004年12月24日
使用前台控制或参数化查询或,存储过程。
回复 点赞
exboy 2004年12月24日
在 duamiwsh 里面就是自己写的涵数来处理的
回复 点赞
exboy 2004年12月24日
如果是直接使用 SQL 语句的话,那就自己写个函数来处理了。
回复 点赞
Truly 2004年12月24日
cmd.Parameters.Add("@item1",SqlDbType.Varchar,256) = yourParam1

Add方法中指定的长度是可以截断的

存储过程的入口参数长度定义也是可以截断的
如:
@para varchar(256),
回复 点赞
nga96 2004年12月24日
好像SQL能自动截断吧,兄弟
回复 点赞
Jouzen 2004年12月24日
我也想知道 有什么更好的方法。

是不是只能用substr()?

帮顶
回复 点赞
realljx 2004年12月24日
恩,是拼的串。而切我没有办法知道目标字段的大小。

难道 SQL Server 没有提供类似的参数 或者 在SQL 语句里面也没有类似的参数 吗?
回复 点赞
brightheroes 2004年12月24日
你要用sql来操作的话
是拼的串的话,就要考虑验证了

如果你的sql里面用了参数

比如说insert into xx ..........values(@item1,@item2.....
这样的情况,
.Add("@item1",SqlDbType.Varchar,256) = yourParam1
好像也不会出现截断的情况吧(没有验证过)
回复 点赞
brightheroes 2004年12月24日
或者你的UI上,要设置最大限制,比如说,MAXLENGTH之类的属性
回复 点赞
realljx 2004年12月24日
可是我的 基本上都是 sql 来直接操作的呵呵:)
回复 点赞
brightheroes 2004年12月24日
如果是用存储过程来保存数据的话
采用varchar(i)类型的参数
将会自动截断超过i之后的数据

i为一个整数
回复 点赞
realljx 2004年12月24日
U P 救命啊!!~
回复 点赞
realljx 2004年12月24日
沙发 先祝大家圣诞快乐。

在隆冬来临之际,希望你身体健康,永远快乐的就像炉子上的水壶一样,即使屁股烧得红红的,也依然快乐的吹着口哨幸福的冒着鼻涕泡泡。圣诞节来临了,朋友,祝你节日快乐~!
回复 点赞
李洪喜 2004年12月24日
肯定是你的数据表的字段设置的长度不够了。所以才出现这种情况。
检查一下吧。
回复 点赞
IsSky 2004年12月24日
定义InsertCommand,增加参数可以定义变量的长度。
可以接取
回复 点赞
xym5 2004年12月24日
可以在拼接以后对得到的字串进行截断,自己需要写代码处理
回复 点赞
realljx 2004年12月24日
看起来 真的只能自己来了。

看了 联机帮助也没有什么收获,。
回复 点赞
KentYu 2004年12月24日
不用存储过程,自己拼sql的化,自己写个函数截断啊
回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.4w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告