我试图在SQL中使用REPLACE函数,并且遇到了尝试将字符串附加到列的当前内容末尾的问题。正则表达式在SQL(Microsoft SQL Server 2008 R2)中的字符串追加
set ActualRegex = REPLACE(ActualRegex, ActualRegex, ActualRegex + '[\d\D]*')
这些字符串将用于在C#程序中的正则表达式的检查,但是这并不是问题尤其重要。
当我尝试运行此查询,我最终得到一个错误信息
Msg 8152, Level 16, State 14, Line 1
String or binary data would be truncated.
The statement has been terminated.
我检查这些字段大小,并将得到的字符串几乎不会长得超出了字段的大小(VARCHAR(512))。最大的可能是50个字符,除非有什么奇怪的事情发生,我不知道。
在此先感谢您的帮助!
编辑:下面是完整的查询
update [Registration].[dbo].[MigrationOfTagTypes] set ActualRegex =
REPLACE(ActualRegex, ActualRegex, ActualRegex + '[\d\D]*')
where Regex != '' and Regex like '%\%' escape '\'
编辑:其实,我理解了它和原来我只是愚蠢和忽视的东西少。很明显,这些字段中充满了大量空字符串附加到字符串末尾,所以附加到这将导致破坏大小限制。 感谢您的帮助!
Microsoft SQL Server 2008 R2 – user1704498
这是UPDATE语句的一部分吗? –
是的,整个陈述是:update [Registration]。[dbo]。[MigrationOfTagTypes] set ActualRegex = REPLACE(ActualRegex,ActualRegex,ActualRegex +'[\ d \ D] *') 其中Regex!=''和正则表达式像'%\%'转义'\' – user1704498