Usuário com melhor resposta
Replace não está funcionando.

Pergunta
-
SQL Express 2005
Eu estou dando um select em uma tabela do excel da seguinte forma:
SELECT REPLACE([LimiteTol], '', 0) FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Data Source=C:\Limites.xls;Extended Properties=EXCEL 8.0')...[Ultragrid1$] where [LimiteTol]='';
Só que ele não está trocando o '' por 0 nem por nada... Oq pode ser? tem uns 17 campos com '' e não são nulos pois se eu coloco o where para is null ele não pega nem uma linha... Já estou ficando louco 8\
Agradeço se alguém souber oq pode ser isso e como se resolve...
PS. Gostaria de saber a causa disso :)
PS2. Aparentemente as planilhas estão armazenando números como texto inclusive esses campos em branco. Porém infelizmente eu não posso alterar isso pois a tabela é gerada por outra aplicação que não é minha :/
- Editado Airton Gomes de Lima segunda-feira, 10 de maio de 2010 12:47
Respostas
-
O null do excel é diferente do Null no SQl server. Para que sua lógica funcione utilizeo comando
Case When Then End no select
SELECT [LimiteTol] = Case LEN([LimiteTol]) When 0 Then '0' Else [LimiteTol] End FROM OPENDATASOURCE
('Microsoft.Jet.OLEDB.4.0','Data Source=D:\Limites.xls;Extended Properties=EXCEL 8.0')...[Ultragrid1$]Traduzindo:
Quando o tamanho for 0 jogue 0 caso contrario traga o valor
Não esqueça de marcar como resposta se for útil
Thiago Moura
J.N. Moura Informatica LTDA ME
- Marcado como Resposta Airton Gomes de Lima segunda-feira, 10 de maio de 2010 17:19
Todas as Respostas
-
-
Nada... O pior é que é = a '' pois eu coloquei um Where='' logo não tem espaços nem nada...
Abaixo o XLS e o comando que estou usando:
SELECT REPLACE([LimiteTol], '', 0) FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Data Source=C:\Limites.xls;Extended Properties=EXCEL 8.0')...[Ultragrid1$] where [LimiteTol]='';
http://www.airtongomes.com.br/limites.xls
-
O null do excel é diferente do Null no SQl server. Para que sua lógica funcione utilizeo comando
Case When Then End no select
SELECT [LimiteTol] = Case LEN([LimiteTol]) When 0 Then '0' Else [LimiteTol] End FROM OPENDATASOURCE
('Microsoft.Jet.OLEDB.4.0','Data Source=D:\Limites.xls;Extended Properties=EXCEL 8.0')...[Ultragrid1$]Traduzindo:
Quando o tamanho for 0 jogue 0 caso contrario traga o valor
Não esqueça de marcar como resposta se for útil
Thiago Moura
J.N. Moura Informatica LTDA ME
- Marcado como Resposta Airton Gomes de Lima segunda-feira, 10 de maio de 2010 17:19
-