This is the desired result: DB Fiddle - SQL Database Playground
PGAdmin have about the same result:
But from Go it puts garbage instead of JSON value:
[{“status_id”:0,“val”:“IkFrdGl2Ig==”},{“status_id”:1,“val”:“IkluYWt0aXYi”}]
The query:
WITH list AS
(SELECT status_id, json_array_elements(lang) as row FROM status)
SELECT status_id, row -> 'val' as val FROM list
WHERE row ->> 'key' = $1
The Go code:
// query to return a list with status languages
func getlang(query string, val string) interface{} {
if len(query) > 0 {
var list []map[string]interface{}
rows, err := db.Queryx(query, val)
if err != nil {
log("no records")
}
defer rows.Close()
for rows.Next() {
row := make(map[string]interface{})
err = rows.MapScan(row)
if err != nil {
log(err.Error())
}
list = append(list, row)
}
rows.Close()
if len(list) == 0 {
return ("norec")
}
return list
}
return nil
}
The query is OK outside Go, but replaces value with garbage?
No matter if I use placeholder or not.
What am I doing wrong?