标签: json

SQL Server如何将大json上传到列中,性能问题

当 nvarchar(max) 列只有几 MB 数据时,我在表上的单行插入/更新语句上遇到性能不佳的情况。

这是我的表结构:

CREATE TABLE [dbo].[tbl_set_Cart](
    [ID] [int] NOT NULL,
    [AS400_CUSTOMER_COD] [nvarchar](50) NOT NULL,
    [AS400_LISTIN] [int] NOT NULL,
    [VALUE] [nvarchar](max) NOT NULL,
    [DELIVERY_COSTS] [nvarchar](max) NOT NULL,
    [ITEMS_COUNT] [int] NOT NULL,
    [ITEMS] [nvarchar](max) NOT NULL,
    [KIND] [int] NOT NULL,
    [CHECKOUT_INFO] [nvarchar](max) NOT NULL,
    [ISSUES] [nvarchar](max) NOT NULL,
    [LAST_CHECK] [datetime] NOT NULL,
    [USER_ID] [int] NOT NULL,
    [IMPERSONATED_USER_ID] [int] NOT NULL,
    [OVERRIDE_PRICES] [bit] NOT NULL,
    [HAS_ISSUE] [bit] NOT NULL,
    [IS_CONFIRMED] [bit] NOT NULL,
    [IS_COLLECTED] [bit] NOT NULL,
    [_METADATA] [nvarchar](max) NOT …
Run Code Online (Sandbox Code Playgroud)

sql-server update json performance-tuning

1
推荐指数
1
解决办法
1996
查看次数

JSON 类型的 PostgreSQL 错误?

此查询不起作用,但错误没有意义

SELECT count(*) FROM t 
WHERE json_typeof(info->'vatids')='array' AND json_array_length(info->'vatids')>1;
Run Code Online (Sandbox Code Playgroud)

错误:无法获得标量的数组长度

PS:同上 JSONb。

postgresql json

0
推荐指数
1
解决办法
2730
查看次数

如何将多个 ROW 分组为 ARRAY

这是我当前的查询:

SELECT innings_no,
Player_Name,
sum(NoBalls)                                                    as NB
    FROM (
           SELECT A.innings_no,
                  A.bowler,
                  A.Runs_In_Over + ifnull(B.Extra_runs, 0) = 0 as Maiden,
                  A.Balls - ifnull(B.NoBalls, 0)               as Balls,
                  A.Runs_In_Over + ifnull(B.Extra_runs, 0)     as Runs,
                  ifnull(C.Wicket, 0)                          as Wickets,
                  Zero,
                  Four,
                  Six,
                  ifnull(Wides, 0)                             as Wides,
                  ifnull(NoBalls, 0)                           as Noballs
           FROM (SELECT over_id,
                        ABBB.innings_no,
                        ABBB.bowler,
                        count(ABBB.ball_id)                 as Balls,
                        Sum(ABB.Runs_Scored)               As 'Runs_In_Over',
                        SUM(if(ABB.runs_scored = 0, 1, 0)) as Zero,
                        SUM(if(ABB.runs_scored = 4, 1, 0)) as Four,
                        SUM(if(ABB.runs_scored = 6, 1, 0)) as Six
                 FROM …
Run Code Online (Sandbox Code Playgroud)

mysql array json mysql-8.0

0
推荐指数
1
解决办法
2万
查看次数

使用 OPENJSON,无法获取 GROUP BY 结果

我将 JSON 字符串传递给存储过程以插入仓库库存。

有时,会有多个具有相同产品的订单项,在相同的货架上、相同的托盘 (LPN) 上、具有相同的日期。我想将它们汇总到表中的一行中。

JSON 表示已接收并存放到某个位置的各个行。这里有 2 个相同的项目:

[{"StockCode": "ABC123", "Qty": "200", "Bin": "E4B4_L", "LPN": "1234", "PutDate": "2022-01-21 18:35:53 UTC"}, {"StockCode": "ABC123", "Qty": "400", "Bin": "E4B4_L", "LPN": "1234", "PutDate": "2022-01-21 18:36:43 UTC"}]
Run Code Online (Sandbox Code Playgroud)

所以:

ABC | 200 |  2022-01-21 00:00:00.000 | LPN1234
ABC | 400 |  2022-01-21 00:00:00.000 | LPN1234
Run Code Online (Sandbox Code Playgroud)

应汇总为:

ABC | 600 |  2022-01-21 00:00:00.000 | LPN1234
Run Code Online (Sandbox Code Playgroud)

我尝试对数量进行 GROUP BY 和 SUM,但表中的结果行仍然是 2 个单独的行。我意识到由于时间戳的原因 PutDate 不一样,所以我认为肯定将其转换为 DATE 可以解决这个问题,但事实并非如此。

SQL脚本:

ALTER Procedure spc_PutAway
(@json NVARCHAR(MAX) = '')
AS …
Run Code Online (Sandbox Code Playgroud)

sql-server insert group-by json

0
推荐指数
1
解决办法
931
查看次数

运算符不存在:json = 未知

这是我正在尝试做的一个例子,

SELECT *
FROM ( VALUES ('{"a":1}'::json) )
  AS t(data)
WHERE data = '{"a":1}'::json;
Run Code Online (Sandbox Code Playgroud)

但它给了我这个错误,

ERROR:  operator does not exist: json = json
LINE 4: WHERE data = '{"a":1}'::json;
                   ^
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.
Run Code Online (Sandbox Code Playgroud)

postgresql json

-1
推荐指数
1
解决办法
2万
查看次数