Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

pronaci string sa najvise karaktera

[es] :: Pascal / Delphi / Kylix :: pronaci string sa najvise karaktera

[ Pregleda: 2398 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

prginfo
NS

Član broj: 174814
Poruke: 133
79.101.15.*



+1 Profil

icon pronaci string sa najvise karaktera25.09.2008. u 12:30 - pre 189 meseci
Kako mogu da putem SQL-a postavim upit tako, da mi iz baze, iz odredjene tabele, posmatra odredjeno polje, i od svih recordsa u bazi za to polje izdvoji polje koje ima najduzi niz.

Da pojasnim, u tabeli1 imam polje1, polje2, polje3

polje2 je tipa char (string) duzine 20

kako da od svih upisa u tu tabelu, vidim koji mi je najduzi zapis

nesto kao f-ja MAX za integer, samo sto mi ovde treba string lenght

neka funkcija kao:
select MAX_STRING_LENGHT(polje2) from tabela1

Hvala
 
Odgovor na temu

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.adsl.net.t-com.hr.



+1 Profil

icon Re: pronaci string sa najvise karaktera25.09.2008. u 12:45 - pre 189 meseci
uključi externe funkcije koje dobiješ uz fb: ib_udf

tamo postoji:
Code:

/*****************************************
 *
 *    s t r l e n
 *
 *****************************************
 *
 * Functional description:
 *    Returns the length of a given string.
 *
 *****************************************/
DECLARE EXTERNAL FUNCTION strlen 
    CSTRING(32767)
    RETURNS INTEGER BY VALUE
    ENTRY_POINT 'IB_UDF_strlen' MODULE_NAME 'ib_udf';


pa tako:

SELECT MAX(STRLEN(POLJE2)) FROM TABELA1

ili

SELECT * FROM TABELA1
WHERE STRLEN(POLJE2) = (SELECT MAX(STRLEN(POLJE2)) FROM TABELA1)
 
Odgovor na temu

prginfo
NS

Član broj: 174814
Poruke: 133
79.101.15.*



+1 Profil

icon Re: pronaci string sa najvise karaktera25.09.2008. u 13:09 - pre 189 meseci
A da li je nekako izvodljivo to odraditi cistim SQL-om (bez deklarisanja funkcija)?
 
Odgovor na temu

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.adsl.net.t-com.hr.



+1 Profil

icon Re: pronaci string sa najvise karaktera25.09.2008. u 13:17 - pre 189 meseci
mislim da ne direktno, jedino dodati field u tablicu npr:

duzina_podatka integer;

pa u njega upistivati dužinu pri upisu/izmjeni sloga.
 
Odgovor na temu

schild
Dejan Šild
TopCode Software
Subotica

Član broj: 59888
Poruke: 138
213.240.53.*

Sajt: www.topcode.rs


+2 Profil

icon Re: pronaci string sa najvise karaktera25.09.2008. u 13:53 - pre 189 meseci
Citat:
prginfo: A da li je nekako izvodljivo to odraditi cistim SQL-om (bez deklarisanja funkcija)?

u FB2.0 imas internu funkciju CHAR_LENGTH, tako da moze!
Znaci: SELECT MAX(CHAR_LENGTH(POLJE2)) FROM TABELA1

Mada nisi rekao za koju bazu pitas... mi ti svi odgovaramo za FB :)
 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.adsl-1.sezampro.yu.



Profil

icon Re: pronaci string sa najvise karaktera25.09.2008. u 17:45 - pre 189 meseci
Code:

CREATE TABLE TABELA1 (
  POLJE1 INTEGER,
  POLJE2 VARCHAR(20),
  POLJE3 INTEGER);

INSERT INTO TABELA1 VALUES (1,'aaaaa',1);

INSERT INTO TABELA1 VALUES (2,'bbbbbbbbbb',2);

INSERT INTO TABELA1 VALUES (3,'ccccccccccccccc',3);

//********
//  STRLEN
//********

SELECT T1.POLJE1,
       T2.DUZINA,
       T1.POLJE3
FROM   (SELECT POLJE1,
               STRLEN(POLJE2)  AS DUZINA,
               POLJE3
        FROM   TABELA1) T1,
       (SELECT MAX(STRLEN(POLJE2))  AS DUZINA
        FROM   TABELA1) T2
WHERE  T1.DUZINA = T2.DUZINA

//************
// CHAR_LENGTH
//************

SELECT T1.POLJE1,
       T2.DUZINA,
       T1.POLJE3
FROM   (SELECT POLJE1,
               CHAR_LENGTH(POLJE2)  AS DUZINA,
               POLJE3
        FROM   TABELA1) T1,
       (SELECT MAX(CHAR_LENGTH(POLJE2))  AS DUZINA
        FROM   TABELA1) T2
WHERE  T1.DUZINA = T2.DUZINA


Mali primer na brzinu, probaj, trebalo bi da radi.
Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.adsl.net.t-com.hr.



+1 Profil

icon Re: pronaci string sa najvise karaktera25.09.2008. u 19:31 - pre 189 meseci
Za one koji koriste FB 1.5
pronašao sam ovu proceduru za dobivanje dužine string, zanimljivo rješenje:

Code:

CREATE PROCEDURE Len (str VARCHAR(100))
  RETURNS (len INTEGER) AS
DECLARE VARIABLE pat VARCHAR(100);
BEGIN
  len = null;
  IF (str IS NULL) THEN EXIT;

  pat = '';
  len = 0;
  WHILE (NOT str LIKE pat) DO BEGIN
    pat = pat || '_';
    len = len + 1;
  END
END


i za substring

Code:

CREATE PROCEDURE Pos (SubStr VARCHAR(100), Str VARCHAR(100))
  RETURNS (Pos INTEGER) AS
DECLARE VARIABLE SubStr2 VARCHAR(201); /* 1 + SubStr-lenght + Str-length */
DECLARE VARIABLE Tmp VARCHAR(100);
BEGIN
  IF (SubStr IS NULL OR Str IS NULL)
  THEN BEGIN Pos = NULL; EXIT; END

  SubStr2 = SubStr || '%';
  Tmp = '';
  Pos = 1;
  WHILE (Str NOT LIKE SubStr2 AND Str NOT LIKE Tmp) DO BEGIN
    SubStr2 = '_' || SubStr2;
    Tmp = Tmp || '_';
    Pos = Pos + 1;
  END

  IF (Str LIKE Tmp) THEN Pos = 0;
END
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: pronaci string sa najvise karaktera

[ Pregleda: 2398 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.