AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 207984
Accepted
Maxim Yefremov
Maxim Yefremov
Asked: 2018-05-28 10:24:22 +0800 CST2018-05-28 10:24:22 +0800 CST 2018-05-28 10:24:22 +0800 CST

Tirando as aspas de strings JSON; imprimir strings JSON sem aspas

  • 772
SELECT json_array_elements('["one", "two"]'::json)

dá resultado

| json_array_elements |
| :------------------ |
| "um" |
| "dois" |

Eu gostaria de ter o mesmo, mas sem as aspas:

one
two

Parece que não posso usar ->>aqui porque não tenho nomes de campos no JSON. É apenas um array de strings.

Versão do Postgres: PostgreSQL 10.0 em x86_64-apple-darwin, compilado por i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Baseado na Apple Inc. build 5658) (LLVM build 2336.11.00), 64- pedaço

postgresql json
  • 4 4 respostas
  • 29402 Views

4 respostas

  • Voted
  1. Slava V
    2019-04-06T07:52:15+08:002019-04-06T07:52:15+08:00
    SELECT value#>>'{}' as col FROM json_array_elements('["one", "two"]'::json);
    

    Resultado:

    col
    ---
    one
    two
    
    • 36
  2. Best Answer
    Evan Carroll
    2018-05-28T12:30:59+08:002018-05-28T12:30:59+08:00

    A coerção padrão json->textsai com aspas duplas ( ") porque coagir de textpara uma jsonstring exige que você coloque aspas duplas em sua entrada. Para se livrar das aspas duplas, useTRIM

    SELECT x, trim('"' FROM x::text)
    FROM json_array_elements('["one", "two"]'::json) AS t(x);
       x   | btrim 
    -------+-------
     "one" | one
     "two" | two
    (2 rows)
    

    Ponto importante, porém, você perde alguma utilidade se fizer isso. Todos os tipos JSONB são retornados em um formato textual que pode ser usado para voltar jsonbcom a text->jsonbcoerção. É uma função de mapeamento bijetivo. Perder isso significa nulle "null"são os mesmos, como são 1e "1".

    SELECT x, trim('"' FROM x::text)
    FROM json_array_elements('[null, "null", 1, "1"]') AS t(x);
       x    | btrim 
    --------+-------
     null   | null
     "null" | null
     1      | 1
     "1"    | 1
    (4 rows)
    

    Internos..

    Se você quer saber o que está acontecendo. Todos os tipos podem fornecer um _outque os leva textou _sendque os leva à representação binária e uma recíproca _ine _recvque os leva dessas formas e os mapeia de volta aos tipos. Aqui você está recebendo jsonb_out,

    1. jsonb_outque chamaJsonbToCstring
    2. JsonbToCstringque chamaJsonbToCStringWorker
    3. JsonbToCStringWorkerque chamajsonb_put_escaped_value
    4. jsonb_put_escaped_value(StringInfo out, JsonbValue *scalarVal)que chamaescape_json
    5. escape_json(StringInfo buf, const char *str)que adiciona o" e é codificado. Não há outro jeito.
    • 16
  3. Daniel Canales
    2021-01-26T10:12:14+08:002021-01-26T10:12:14+08:00
    SELECT json_array_elements_text('["one", "two"]'::json)
    

    de se estiver usando jsonb em vez disso:

    SELECT jsonb_array_elements_text('["one", "two"]'::jsonb)
    
    • 10
  4. Andy
    2021-10-24T07:38:44+08:002021-10-24T07:38:44+08:00

    Você poderia usar jsonb_array_elementsem vez disso:

    SELECT jsonb_array_elements('["one", "two"]'::jsonb) ->> 0
    

    Resultado:

    col
    ---
    one
    two
    
    • 3

relate perguntas

  • Posso ativar o PITR depois que o banco de dados foi usado

  • Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo

  • Os procedimentos armazenados impedem a injeção de SQL?

  • Sequências Biológicas do UniProt no PostgreSQL

  • Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve