• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

subzerods

Ajuda MSSQL, SELECT * FROM TABELA

4 mensagens neste tópico

Boas.

Estou a desenvolver um projectozinho em que estou a usar uma base de dados MSSQL.

Mas neste momento preciso de fazer um select numa tabela em que, quer alguns dos campos da tabela quer o nome dessa mesma tabela, são compostos por palavras, espaços e um hífen no caso da tabela (nome da tabela: Tabela - 2009 testes$Março ; nome de alguns campos: Valor Inicial, Tipo Produto, Units of Measure, etc.).

O meu problema é nos espaços dos nomes dos campos e da tabela e também do hífen, quando faço "SELECT  * FROM Tabela - 2009 testes$Março" o que recebo é "Line 1: Incorrect syntax near '-'." (após retirado o hífen o erro passa a ser outro pois o SQL assume o nome da tabela como três valores diferentes (Tabela; 2009; testes$Março) .

O que eu queria saber é, se existe alguma maneira de delimitar os valores a usar no select. Por exemplo, definir que o nome da tabela é aquele entre aspas ou assim e o mesmo para os campos.

(Por exemplo: SELECT 'Campo valores' FROM 'Tabela Com Vários Espaços')

Agradecia que me respondessem se isto é possível de se fazer e desde já obrigado :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Embora não seja considerado boa prática espaços nos nomes das tabelas parece que até a microsoft na BD de demo Northwind comete esse pecado. Eu sugeria a substituição de espaços por _.

Caso queiras manter essa lógica aqui vai uma possível solução:

Using the MS SQL Server sample database NorthWind, tabel 'Order Details'

This table contains a space in the name (bad habit anyway) and CodeCharge

cannot handle this well. The generated SQL statement does something like

SELECT ..... FROM Order Details O ORDER BY ......

where it should read

SELECT ..... FROM [Order Details] O ORDER BY ......

for SQL Server.

Depois diz se funcionou...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

podes resolver isso com aspas.

SELECT tbl."coluna xpto"
FROM "Tabela - 2009 testes$Março" as tbl

!!! MAS !!!!  é MUITO MÁ prática usar espaços, caracteres especiais, acentos, "ç", palavras reservadas...

Inté! :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado, já encontrei uma solução  :biggrin:

Eu sei que não é muito recomendado e eu próprio tenho por hábito utilizar apenas _ nos nomes das BD's, campos e tabelas, mas como estou a trabalhar sob a base de dados de um hotel que já está toda construída e configurada, eu apenas vou buscar os valores à BD e como tal não tenho permissão para alterar a BD.

A solução que arranjei é uma que já tinha experimentado só que pelos vistos fiz algo mal da primeira vez.

A solução é utilizar parênteses rectos [] (por exemplo: SELECT [Campo W],[Campo X],[Campo Y],[Campo Z] FROM [Nome da tabela com espaços e caracteres especiais] e assim já consigo executar tudo correctamente. :)

Obrigado pessoal :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora