我很难弄清楚这一点。我有一个事件表,其中包含列id
,comments
,incidentdate
和incidentdescID
。该表中有10年的数据。我编写了一个存储过程来提取最近4年的数据,但遇到以下错误。
8152消息,第16级,状态10,第27行
字符串或二进制数据将被截断。
因此,当我将事件的日期范围更改为2015年至2016年之间时,我没有收到任何错误消息。然后,当我将其更改为2017-2018年之间时,我仍然没有收到错误。但是当我将其更改为2016年至2017年之间时,我得到了错误。同样,当我注释掉comments
列时,无论输入什么日期范围,都不会出现错误。
因此,我想Comments
列中可能有一个特殊字符,该列是text
表中的Incident
列。如果是这种情况,我如何能够选择该列,但在不更改表的情况下删除存储过程中的特殊字符?
答案 0 :(得分:0)
如果您怀疑“评论”列是罪魁祸首,则可以在我的朋友中搜索垃圾值。我一次收到此错误,并通过用空格替换char(10)和char(13)来解决。
1。
SELECT REPLACE(REPLACE(tbl.comments, CHAR(10), '*JUNK*'), CHAR(13), '*JUNK*') AS CleandComments
FROM [your table name] tbl
当您从Excel数据源或具有NVARCHAR
数据类型的源表中导入数据而目标是CSV或仅接受VARCHAR
时,这是理想的情况。
如果是上述情况,那么您只需要在过程中的列上放置REPLACE
函数