私はSSMS 2008を使用しており、次のスカラー関数を使用してテキスト文字列を取得し、Microsoft Wordからすべてのメタタグを削除します。タグは "< ...>"で囲まれており、1つの列に任意の数のタグ/レコードが存在できます。TSQLの置換表関数の作成方法は?
この列の各行を更新するために、このコードに基づいてスカラー関数を作成しました。しかし、このスカラー関数は非常に長い時間がかかります。これのテーブル関数バージョンはより速いでしょうか?もしそうなら、どうすればテーブルを作るためにこの関数を書き直すことができますか?
WHILE PATINDEX('%[%]%', @str) > 0
SET @str = REPLACE(@str, SUBSTRING(@str,
PATINDEX('%[%]%', @str), 1), '')
SELECT @str
この表の機能はほとんど機能します。しかし、今はうまくいきません。問題は、私が一時テーブルでこの関数を使用しようとしていることです。元のテーブルにはint PKがなく、元のテーブルにカラムを追加することはできません。
私はこのテーブルに基づいてビューを作成し、それにPK int列を追加しようとしました。私は、この追加のPKのint型の列(「N」)でビューを作成しようとしたとき、それは私にエラー与えたので:
Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'identity'.
をしかし、ALTER VIEWは、列を追加サポートしていません。これを行う別の方法がありますか?ここに私のオリジナルの一時テーブルがある私は、変更しようとしています:
select [progress_note].[note_text], [progress_note].[event_log_id]
INTO #TEMP_PN
from [evolv_cs].[dbo].[progress_note]
group by [progress_note].[event_log_id], [progress_note].[note_text]
は[note_text] varchar型(最大)とevent_log_idですUNIQUEIDENTIFIER。だから[note_text]には "<"と ">"という文字列が含まれています。このdbo.ufn_StripHTML関数を変更するにはどうすればよいですか?
私は最新のコードを試しましたが、これは超高速です!しかし、5700行を通過した後、次のエラーが発生しました。
Msg 537, Level 16, State 2, Line 1
Invalid length parameter passed to the LEFT or SUBSTRING function.
これは何について知っていますか?
SQL ServerのCLRは、考慮すべきオプションです。 –
note_textの長さが>私が提供した500のテストの例よりも多い場合は、Numberテーブルにさらに多くの行が必要な場合があります。また、私のvarchar(8000) - > maxを修正した後にテストをしてください。ここをクリックして読む - > http://www.sqlservercentral.com/articles/T-SQL/62867/ –