文字列内の任意の文字/特殊文字をエスケープできるSQL ServerまたはVisual Studioにway/function/reg-exがありますか?SQL Serverでjson形式の文字列を解析する方法
私はサーバーのテキストフィールドがあり、そこに任意の種類の文字列(特殊文字を含む)を入力できる機能/ページがあります。その結果、私はJSON文字列をそれらのテキストフィールドエントリの 'Key'、 'Value'として表示しています。 EXのために
:私は、ページ上でこれらのフィールドを持っている:
Name , LastName , Address
そして、上記のフィールドに入力された値は、次のとおりです。
Name : *-+-#. Wwweee4426554456666yyyy5uuuuttrrrreree6655zfgh\\][;'/.uuuuuuuu66uuyt,+_)(*&^%$#@!~|}{:\\\"?><\\\\][;'/.,+_)(*&^%$#@!~|}{:\\\"?><\\\\][;'/.,+_)(*&^%$#@!~|}{:\\\"?><\\\\][;'/.,+_)(*&^%$#@!~|}{:\
LastName : Piterson
Address : Park Road, LA
そして、私はJSON文字列のような出力を示していますbelow-
[{"Key":"Name","Value":"*-+-#.Wwweee4426554456666yyyy5uuuuttrrrreree6655zfgh\\][;'/.uuuuuuuu66uuyt,+_)(*&^%$#@!~|}{:\\\"?><\\\\][;'/.,+_)(*&^%$#@!~|}{:\\\"?><\\\\][;'/.,+_)(*&^%$#@!~|}{:\\\"?><\\\\][;'/.,+_)(*&^%$#@!~|}{:\"},{"Key":"LastName","Value":"Piterson"},{"Key":"Address","Value":"Park Road, LA"}]
しかし、この文字列を解析しているうちに、以下の解析エラーが発生しています -
"After parsing a value an unexpected character was encountered: K. Path '[4].Value', line 1, position 1246."
私は文字列を解析するために、SQL Serverの機能の下に使用しています -
ALTER function [dbo].[fnEscapeString](@text nVARCHAR(MAX))
RETURNS NVARCHAR(MAX)
as
BEGIN
--if(CHARINDEX())
if (CHARINDEX('\',@text) > 0)
set @text = Replace(@text,'\','\\')
if (CHARINDEX('"',@text) > 0)
set @text = Replace(@text,'"','\"')
return @text
END
この関数は、(他の多くの文字列で)他の多くの例で働いています。しかし、上記の文字列で動作しません。私はこの関数がすべての種類の文字列を解析するのに十分ではないと思います。
有効なJSON行形式の文字列を解析できる方法はありますか。どのreg-exまたはSQL関数でも可能です。提案してください。
どのバージョンのSQL-Serverですか? – Shnugo
与えられた例はあまり300文字以下です。あなたのエラーメッセージは* 1246 *の位置を示しています。あなたが提供する関数は、指定された文字列でうまくいくようです...他のどこかで問題が発生する可能性があります... – Shnugo
@Shnugo、SQL Server 2012 – GreenSoft