SQLでREPLACE関数を使用しようとしていますが、列の現在の内容の最後に文字列を追加しようとすると問題が発生します。
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 '\'
編集:実際、私はそれを理解し、私はただ愚かで小さな何かを見落としていたことがわかりました。どうやらこれらのフィールドは文字列の最後に追加されたたくさんの空の空白で埋められていたので、それに追加するとサイズの制約が破られることになります。 すべての助けをありがとう!