假設我@ImageURL在我的程序中呼叫了一個 JSON 輸入引數,該引數具有以下結構,用于存盤和操作我的 Uploader 部分。
[
{
"Title": "some title",
"Urls": "some url",
"Type": "application/pdf",
"IsPrimary": true
},
...
]
這個 JSON 字串總是有不止一組標題、URL 等,但在某些情況下,我堅持檢查它是否只包含一個,因為我不確定前端開發人員是否會為我發送 JSON以正確的格式。為了檢查這一點,我使用了以下似乎可以作業的代碼,但我覺得它不干凈,可能有比創建 TMP 表并檢查它的COUNT.
DECLARE @JSONImageFile TABLE(
Level1ID INT,
JSONImageFile NVARCHAR(MAX),
JSONImageFileTitle NVARCHAR(1000),
JSONImageFileType NVARCHAR(100),
JSONImageFileIsPrimary BIT
)
INSERT INTO @JSONImageFile(
Level1ID,
JSONImageFile,
JSONImageFileTitle,
JSONImageFileType,
JSONImageFileIsPrimary
)
SELECT
@Level1ID,
Urls,
Title,
Type,
IsPrimary
FROM OPENJSON(@ImageURL) WITH (
Urls NVARCHAR(MAX),
Title NVARCHAR(1000),
Type NVARCHAR(100),
IsPrimary BIT
)
IF (SELECT COUNT(*) FROM @JSONImageFile) = 1 /* the main code */
提前感謝您的回答。
uj5u.com熱心網友回復:
如果是 JSON 陣列,您可以嘗試使用默認模式決議此陣列并檢查回傳列OPENSJON()的最大值:key
JSON:
DECLARE @ImageUrl nvarchar(max) =
N'[
{
"Title": "some title",
"Urls": "some url",
"Type": "application/pdf",
"IsPrimary": true
},
{
"Title": "some title",
"Urls": "some url",
"Type": "application/pdf",
"IsPrimary": true
}
]'
陳述:
IF EXISTS (
SELECT 1
FROM OPENJSON(@ImageUrl)
HAVING MAX(CONVERT(int, [key])) = 0
)
PRINT 'Success'
ELSE
PRINT 'Error'
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/460916.html
上一篇:使用laravel上傳檔案
