【发布时间】:2017-01-09 15:18:33
【问题描述】:
我正在从数据库表中读取一些数据,并且文本包含“/”字符。
我现在需要将此字符串插入到不同的 SQL 表中,但在正确转义它时遇到问题。
如果我读到的字符串包含这个模式:
测试/测试2
经过一些谷歌搜索后,我正在使用插入文本 (谷歌参考 Ref1 和 Ref2)
Field1= replace (cast('Test/th' as nvarchar),'/','\\\')
但它仍然返回错误:
消息 8152,第 16 级,状态 2,第 18 行 字符串或二进制数据将被截断。
如果我使用:
Field1= replace (cast('Test/th' as nvarchar),'/','')
一切都好
谁能帮我解决我的逃生条款?
【问题讨论】:
-
该错误表明您尝试存储的字符串长度超过该列将接受的长度。我认为这与特殊字符无关。
Field1的定义是什么?您还应该在转换中使用带有NVARCHAR的长度,例如CONVERT(NVARCHAR(20), 'Test/th') -
第一次替换有什么意义?您正在使用....正斜杠更改正斜杠的所有实例。
-
抱歉你是对的,它应该是\
标签: sql sql-server sql-server-2008