sexta-feira, 9 de abril de 2010

SQL hifen

colunas ou tabelas com hifen em um banco de dados podem dar muita dor de cabeça...
use sempre underlines (_) e não hífens (-)...

entretando.. se você estiver mexendo em um sistema que tenha essa situação, como aconteceu comigo hoje, terá que usar aspas duplas!

a seguinte query não funciona
select * from pub.empresa where ep-codigo = 1

Você obtém erros como:
Error: [DataDirect][OpenEdge JDBC Driver][OpenEdge] Column não encontrada ou especificada (7520)
Error: [DataDirect][OpenEdge JDBC Driver][OpenEdge] Column "EP" cannot be found or is not specified for query. (13865)
Caused by: java.sql.SQLException: [DataDirect][OpenEdge JDBC Driver][OpenEdge] Column "EMPRESA0_.EP" cannot be found or is not specified for query. (13865)

para resolver use aspas duplas:
select * from pub.empresa where "ep-codigo" = 1

e tudo funcionará perfeitamente..

se você usar hibernate, jpa.. e for mapear um campo com hífen, terá que colocar aspas também, mas terá que usar o caracter de escape \"

@Column(name = "\"ep-codigo\"")
private Long epCodigo;

é isso aí, valeu!

Um comentário:

  1. Resolveu uma dúvida rapidamente aqui, continue firme e forte, bom trabalho.

    ResponderExcluir