SQL Server或Visual Studio中是否有方法/函數/ reg-ex,通過它我們可以在字符串中轉義任何字符/特殊字符?如何在SQL Server中解析json格式的字符串
我有一個功能/頁面有服務器文本字段,用戶可以輸入任何種類的字符串(包括特殊字符)。因此,我將JSON字符串顯示爲這些文本字段條目的「鍵」,「值」。
對於例如:我有一個頁面上的這些字段:
Name , LastName , Address
併爲上述領域輸入的值是:
Name : *-+-#. Wwweee4426554456666yyyy5uuuuttrrrreree6655zfgh\\][;'/.uuuuuuuu66uuyt,+_)(*&^%$#@!~|}{:\\\"?><\\\\][;'/.,+_)(*&^%$#@!~|}{:\\\"?><\\\\][;'/.,+_)(*&^%$#@!~|}{:\\\"?><\\\\][;'/.,+_)(*&^%$#@!~|}{:\
LastName : Piterson
Address : Park Road, LA
而且我喜歡展示一個JSON字符串輸出如下─
[{"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