Boa noite, estou fazendo uma pesquisa com o banco de dados em java, veja:
qr=cn.prepareStatement(sql);qr.setInt(1,codigo);
ele pesquisa certinho porém ele pesquisa apenas se a variável código for idêntica ao do banco de dados(mysql), e queria que ele pesquisa-se um exemplo se a variável código tiver o valor ‘4’ queria que ele pesquisa-se todos os números que comecem com ‘4’ também ex: 4,41,42,49, se fosse uma string a variável eu usaria “%” e estaria resolvido o problema mas do tipo int estou tendo problemas.
Grato.
no caso é isso qr.setInt(1, codigo); mas n da com o “%” ;/ pq é int string ate daria.
Rodrigo_Sasaki
Você tem certeza que esse campo precisa ser numérico no seu banco de dados ?
S
samuelM
Sim precisa … tentei assim tambem mas nao vingou:
sql="SELECT * FROM p WHERE codigo LIKE "+codigo+"%";
Rodrigo_Sasaki
isso não vai funcionar, cara…
o like só vai funcionar com atributos Varchar se eu não me engano…
você pode ter que fazer cast dele na query de alguma forma.
algo como isso:
WHERECAST(colnameasVARCHAR(10))LIKE'123%'
mas não sei se isso é ANSI… não garanto nada hehehe
S
samuelM
é infelizmente também não deu certo ;/
sql="SELECT * FROM p WHERE CAST(codigo as VARCHAR(10)) LIKE "+codigo+"%";
Rodrigo_Sasaki
se você estiver usando preparedStatement não pode deixar o % na sua query.
outra coisa… não quero me intrometer heheh… mas se não for confidencial, você poderia falar o que esse campo guarda? você faz operações matemáticas com esse valor?
S
samuelM
N pode ser varchar o campo codigo por varios motivos um deles é que o campo é auto increment.
Rodrigo_Sasaki
Entendi…
desculpa, é que nunca vi ninguém fazer uma busca desse tipo em um campo auto-increment
nel
Bom dia.
Ao que eu sei, LIKE só funciona com Strings, portanto, precisa de um tratamento “especial” para inteiros. Uma opção, que acredito que funcione, é algo do tipo:
SELECT*FROMpWHERECAST(codigoASTEXT)LIKE'123%'
Ou em código seria
Stringsql="SELECT * FROM p WHERE CAST(codigo AS TEXT) LIKE '"+codigo+"%'";