O código abaixo não deveria retornar 0?
SELECT REPLACE(ISNULL('',0),'',0)
Isso também não retorna 0 ....
SELECT REPLACE('','',0)
Eu tenho um campo nvarchar em uma tabela que contém valores numéricos, mas às vezes está em branco (não nulo).
Eu tenho uma consulta que verifica se esse campo é < um número em outro campo, mas recebo
"Erro ao converter o tipo de dados nvarchar em numérico."
erros se o campo estiver em branco. Estou tentando converter os valores em branco ('') em zeros durante a execução da consulta para não receber o erro de conversão, mas acabei de perceber que
SELECT REPLACE('','',0)
não converterá o campo em branco em 0.
Eu tentei usar o código abaixo para tentar evitar o erro de conversão, mas não está avaliando para 0 quando o campo de limite está em branco como eu esperava:
SELECT CAST(REPLACE(ISNULL(Threshold,0),'',0) as decimal(4,2))
Como posso obter o código para avaliar como 0 quando o campo de limite está em branco.
Acho que poderia escrever uma instrução if ou case que pula o limite de valor em branco (''), mas estou pensando que deve haver uma maneira de fazer tudo embutido, algo como o que estou tentando fazer com o código acima .
Retorna o primeiro argumento
''
(como énot null
), então sua pergunta se resume a perguntar por queNão retorna
0
.A documentação para
REPLACE
os estadosTSQL não é incomum a esse respeito.
Em C#, a tentativa
"Some String".Replace("", "0")
daria um erro "A string não pode ter comprimento zero".Isso não é surpreendente, pois em qualquer string de texto você pode argumentar que existem infinitas strings vazias.
Pode haver 20 entre o "T" e o "h" no início desta frase. Como eles têm comprimento zero, como poderíamos saber?
Para o seu caso de uso real, você pode usar