Ajuda - Busca - Membros - Calendário
Versão Completa: Dúvida Sql
Fórum Script Brasil > Programação & Desenvolvimento > Delphi, Kylix
sllc
Olá,
Estou precisando fazer uma consulta usando SQL, mas filtrando parte de um campo e não o conteúdo todo dele. Por exemplo, em um campo chamado REFERENCIA tipo string que tem o formato XXXXXX (6 caracteres), eu gostaria de filtrar apenas os três últimos caracteres através de uma consulta select em um clientdataset do datamodule.

dtmdlBiblioteca.clntdtstMovimento.commandtext := 'select * from MOVIMENTO where REFERENCIA='+QuotedStr(edit1.text);

do jeito que está hoje funciona normalmente, mas só se o conteúdo de Edit1.Text tiver 6 caracteres. Como estou precisando testar apenas os últimos 3 caracteres do campo, estou enrolado. Posso, por exemplo, vir a precisar de filtrar também apenas o terceiro caracter do campo. E não sei como fazer isso.

Alguém poderia ajudar??? Agradeço desde já.
Att.
Sergio
Jo
QUOTE(sllc @ 29/06/2007 - 16:12) *
Olá,
Estou precisando fazer uma consulta usando SQL, mas filtrando parte de um campo e não o conteúdo todo dele. Por exemplo, em um campo chamado REFERENCIA tipo string que tem o formato XXXXXX (6 caracteres), eu gostaria de filtrar apenas os três últimos caracteres através de uma consulta select em um clientdataset do datamodule.

dtmdlBiblioteca.clntdtstMovimento.commandtext := 'select * from MOVIMENTO where REFERENCIA='+QuotedStr(edit1.text);

do jeito que está hoje funciona normalmente, mas só se o conteúdo de Edit1.Text tiver 6 caracteres. Como estou precisando testar apenas os últimos 3 caracteres do campo, estou enrolado. Posso, por exemplo, vir a precisar de filtrar também apenas o terceiro caracter do campo. E não sei como fazer isso.

Alguém poderia ajudar??? Agradeço desde já.
Att.
Sergio


dtmdlBiblioteca.clntdtstMovimento.commandtext := 'select * from MOVIMENTO where REFERENCIA='+QuotedStr(edit1.text);

como neste comando você esta usando uma string é facil, experimente:

dtmdlBiblioteca.clntdtstMovimento.commandtext := 'select * from MOVIMENTO where REFERENCIA='+QuotedStr(copy(trim(edit1.text,4,3)));

neste caso você estara pegando apartir do quarto caracter mais 3. se o edit estiver assim '123456' vai ficar '456' . sera que é assim que você tá querendo ?

Micheus
você poderia, ainda, tentar utilizar o LIKE na cláusula WHERE:
'select * from MOVIMENTO where REFERENCIA LIKE '+QuotedStr('%' +edit1.text);

o % antes do texto a procurar resultará em localizar tudo que termine com a sequência em edit1.text;
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.