Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

317
Visualizações
Extraiga filas si hay / hay 'n' palabra / s antes o después de un patrón en postgres 11

Tengo la siguiente tabla en postgres.

 col1 col2 col3 NCT00000412 Drug Placebo Calcitriol NCT00000412 Drug Placebo Alendronate NCT00000774 Biological Placebo version of rgp120/HIV-1MN NCT00000774 Biological Placebo version of rgp120/HIV-1SF2 NCT00005648 Drug Gemcitabine with Placebo NCT00007631 Drug Tretinoin 0.1% cream or placebo NCT00007735 Drug Doxycycline (200mg/day) or Placebo NCT00032435 Drug PAL-40 Placebo NCT00032435 Drug abciximab placebo; reteplase placebo, abciximab NCT00032435 Drug Valsartan placebo + nateglinide placebo

Estoy tratando de extraer esas filas donde la palabra placebo tiene una sola palabra antes o después. La salida esperada es:

 col1 col2 col3 NCT00000412 Drug Placebo Calcitriol NCT00000412 Drug Placebo Alendronate NCT00032435 Drug PAL-40 Placebo

He intentado siguiendo expresiones regulares:

 select * from table where name ~* '\splacebo\w+' or name ~* '\w+placebo\s'
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Puedes utilizar

 select * from table where name ~* '^(?:placebo\s+\S+|\S+\s+placebo)$'

Vea la demostración de expresiones regulares

Detalles

  • ^ - comienzo de la cadena
  • (?:placebo\s+\S+|\S+\s+placebo) - un grupo sin captura que coincide con
    • placebo\s+\S+ - placebo , luego 1+ espacios en blanco y luego 1+ espacios que no son en blanco
    • | - o
    • \S+\s+placebo - 1+ espacios sin espacios en blanco, luego 1+ espacios en blanco y luego placebo
  • $ - final de la cadena.
over 4 years ago · Santiago Trujillo Relatório

0

Creo que quieres:

 where col3 ~* '(^\S+\s+placebo)|(placebo\s+\S+$)'

Desglose:

 ( ^ beginning of the string \S+ 1 to N characters other than a space \s+ 1 to N spaces placebo literal string "placebo" ) | OR ( placebo literal string "placebo" \s+ 1 to N spaces \S+ 1 to N characters other than a space $ end of the string )

Usé \S en lugar de \w porque quieres hacer coincidir los guiones (lo que \w no hace).

over 4 years ago · Santiago Trujillo Relatório

0

Como nota, puedes hacer esto simplemente usando like :

 where (name like '% Placebo%' and name not like '% % Placebo%') or (name like '%Placebo %' and name not like '%Placebo % %')
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda