Query SQL - duvida sobre condicao

Boa Tarde a todos…

estou com uma duvida em uma condicao numa query que é a seguinte:

eu coloquei uma variavel, nao obrigatoria… que pede para o usuario digitar (0) NAO e (1) SIM ou não entra com valor algum…
%

$ST={SOB CUSTODIA?;;N;}@ SIM (1) | NAO (0)
%

ai coloquei uma condicao para analizar esse campo…

WHERE

status=[$ST]

a select roda… se a pessoa digitar 0 ou 1, mas se ela não digita nd… num roda…

da erro de syntax… e eu queria que se a pessoa não digitasse nd…

ele me trouxesse 0 e 1… listasse tudo…

quem puder me ajudar… eu agradesso…

vlw

.

primeiramente, coloque códigos dentro da tag code, ok?

segundo, poste sua query para que possamos analisar o erro de syntaxe que vc está falando, blz?

Isso provavelmente ocorre, porque quando o usuário não digita nada, o “WHERE” fica quebrado, assim: "WHERE status = ", como não tem nada para comparar, dá erro de sintaxe. Você tem que pensar numa lógica em que, quando o usuário não digitar nada, você some com essa condição.

realmente, quando não digita nada fica quebrado o seu sql

essa é a select… eu vi que meu problema é o seguinte…
como o colega citou … quando minha select volta null… ele não tem como igualar a nd…
nesse caso as respostas possiveis sao 0 e 1… eu precisaria… pegar os 2 resultados se fosse null…

mas num sei como fazer isso… se algum puder me ajudar… coloco outra duvida relacionada… se eu tivesse

as opcoes 1, 2, 3, 4, 5… e eu quissesse 1, 3,4… por exemplo… tipo um IN… tipo:

escolha de 1 a 5… se nulll retorne (1,3,4)… é tipow esse select tb…

%vars
$DI={:d:DATA INICIAL;;S;}
$DF={:d:DATA FINAL;;S;}
$CT={SOB CUSTODIA?;;N;}@ SIM (1) | NAO (0)
%

SELECT
@var:=0

SELECT
@var:=@var+1 AS Item,
CONCAT(cpdue.storeno) AS Loja,
CONCAT(custp.no," ",custp.name) AS Cliente,
(cpdue.checkno*1000) AS Cheque___,
DATE_FORMAT(cpdue.postdate,’%d/%m/%y’) AS Vencto,
cpdue.amt AS _____Valor,
if(cpdue.bits=0,‘NAO’,‘SIM’) AS Custodia
FROM
sqldados.cpdue
LEFT JOIN
sqldados.custp ON (custp.no = cpdue.custno)
LEFT JOIN
sqldados.store ON (store.no = custp.storeno)
WHERE
cpdue.postdate BETWEEN [$DI] AND [$DF] AND
cpdue.status=[$CT]
ORDER BY
cpdue.postdate,cpdue.storeno,custp.name

Qual o banco de dados que você usa? Pode ser que ele já possua funções ou estruturas que permitem resolver esse problema.

Procure ver se existe o CASE (http://dev.mysql.com/doc/refman/5.0/en/case-statement.html), que eu acho que seria o mais adequado para resolver seu problema, apesar dessa documentação ser do MySQL, ele existe em vários outros bancos (sei que tem no Postgres e no SQLServer).

eu uso mysql…

e tentei com case… mas ou eu fiz errado ou nao atende…