当前位置:  开发笔记 > 编程语言 > 正文

SQL INSERT,强制截断字段

如何解决《SQLINSERT,强制截断字段》经验,为你挑选了3个好方法。

我输入的数据包含一些比相应数据库字段长的"流氓"字段.这会导致我的导入脚本使用SQL INSERT语句,并发出警告:

Msg 8152, Level 16, State 13, Line 2
String or binary data would be truncated.

如何强制截断这些字段并使我的脚本完成?



1> Ian Jacobs..:

插入时执行以下操作:

INSERT INTO Table1('Column1') VALUES(LEFT(RTRIM(InputField), MaxLength))

您只能将左N字符存储到数据库中.



2> Meff..:

使用Ansi警告?http://msdn.microsoft.com/en-GB/library/ms190368(v=sql.110).aspx

DECLARE @TABLE TABLE
(
    Data VARCHAR(3)
)

SET ANSI_WARNINGS OFF

INSERT INTO @TABLE 
VALUES('Hello World')

SELECT * FROM @TABLE

SET ANSI_WARNINGS ON

INSERT INTO @TABLE 
VALUES('Goodbye World')

SELECT * FROM @TABLE


在某些情况下,这种"乐队援助"解决方案可能很有用.然而,请仔细阅读.

3> HLGEM..:

我个人希望他们失败然后查看数据.我不相信你应该考虑自动截断数据.你可以通常需要让你的场地定义更大.除非您直观地检查会失败的行,否则您将无法知道.

示例:我们存储语音标题.假设您有两个标题:
如何阅读书籍:
如何在不弄湿的情况下阅读浴缸中的书籍

现在,如果你的字段有10个字符,那么它们将被截断为相同的东西.而且他们被截断的东西甚至没有意义.两者都会说"如何Rea"现在你没有任何区别可能会有两个非常不同的标题,你所拥有的东西无论如何都是不正确的.调整字段以存储更多字符显然是正确的做法.这个例子很傻,但垃圾进去,垃圾出来.如果截断人员或其他关键数据的名称,最终会出现问题,因为您有垃圾数据.我已经看到这种情况发生在我们的语音标题,last_names,地址,电话号码和许多其他数据.如果你必须截断数据,那么你很可能无论如何都要为该记录存储无用的数据.

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有