我有options类型为 jsonb 的列,{"names": ["name1", "name2"]}其格式是用创建的
UPDATE table1 t1 SET options = (SELECT jsonb_build_object('names', names) FROM table2 t2 WHERE t2.id= t1.id)
Run Code Online (Sandbox Code Playgroud)
其中names有类型 jsonb 数组。
SELECT jsonb_typeof(names) FROM table2给array
现在我想提取namesjsonb 数组的值。但查询
SELECT jsonb_build_array(options->>'names') FROM table
Run Code Online (Sandbox Code Playgroud)
给了我["[\"name1\", \"name2\"]"],而我期待着["name1", "name2"]
我怎样才能以正确的格式获得价值?
有问题清单。我一一向用户展示问题并等待用户的回答。每个问题都应该在几秒钟内得到回答(例如问题 5 秒)。如果问题得到正确且及时的回答,那么用户将获得一些积分。我的代码看起来像:
for i := 0; i < len(questions); i++ {
fmt.Println(questions[i].Text)
ans := make(chan int)
go func() {
fmt.Print("Enter answer ")
var u int
fmt.Scanf("%d\n", &u)
ans <- u
}()
select {
case userAnswer := <-ans:
if userAnswer == questions[i].Answer {
points++
}
case <-time.After(5 * time.Second):
fmt.Println("\n Time is over!")
}
}
Run Code Online (Sandbox Code Playgroud)
接下来的问题是:如果用户不回答问题,那么他会收到消息“时间结束”,如预期的那样。但下一个答案将不会被处理,用户应该再次输入。它看起来像下一个输出:
question with answer 1
Enter answer: 1
1 is right answer
question with answer 2
Enter answer: 2
2 is right answer
question with …Run Code Online (Sandbox Code Playgroud)