我試圖在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