Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » cVas 02:53
 » mo2 02:43
 » rzymo 02:25
 » mirek190 02:21
 » Visar 02:04
 » MARC 01:52
 » Shark20 01:39
 » BoloX 01:09
 » Martens 00:54
 » Pinokio.p 00:49
 » doxent 00:17
 » Chrisu 00:06
 » XepeR 00:04
 » john565 23:56
 » rooter666 23:55
 » Pio321 23:53
 » muerte 23:44
 » yanix 23:32
 » Kenny 23:28
 » Flo 23:16

 Dzisiaj przeczytano
 41111 postów,
 wczoraj 25974

 Szybkie ładowanie
 jest:
włączone.

 
ccc
TwojePC.pl © 2001 - 2024
A R C H I W A L N A   W I A D O M O Ś Ć
    

[SQL] Szukanie case insensitive , belzee 28/04/07 21:59
Pora pozna wiec bez owijania: jest tabela, w niej pole w ktorym sa duze i male litery (jak w zdaniu). Jak napisac procedure/zapytanie szukania zeby po wpisaniu szukanego tekstu malymi literami zwracalo odpowiedni rekord ale w zapisie oryginalnym (male/duze)? probowalem szukany ciag konwertowac na male litery i w bazie uzyc LOWER , i mimo, ze dziala to zwraca cale pole jako male litery a ja potrzebuje jak w oryginale.
mam nadzieje, ze wyrazam sie zrozumiale? :)

  1. Podałbyś nazwę bazy danych... , pachura 28/04/07 22:15
    ...bo wszak niemal w każdej funkcje nazywają się inaczej, nie mówiąc już o tym że procedury składowane pisze się w różnych językach (PL/SQL, TSQL etc.).

    W Oracle napisałbyś np.:
    select imie, UPPER(nazwisko) from osoby;
    ...i dostałbyś np.:
    Jan KOWALSKI
    Edgar GOSIEWSKI
    Leon ZIEMNIACZEK

    Nadmienię również że robienie formatowania w bazie danych zamiast we właściwej aplikacji jest mało eleganckie.

    1. ... , belzee 28/04/07 22:23
      baza danych jest txtdb (http://www.c-worker.ch/txtdbapi/index_eng.php). chyba jednak zle zrozumiales moj problem. nie chodzi mi o zwrocenie z bazy pola w UCASE czy LCASE, lecz o uniezaleznienie sie podczas szukania od wielkosci liter zapisanych w bazie.
      zalozmy ze w tabeli jest pole TYTUL w ktorym jest wpisany ciag 'Jakis tam tytulik'. chce napisac procedure szukajaca ktore niezaleznie od tego czy wpisze 'JAKIS*' czy 'Jakis*' lub 'jakis*' zwroci mi ow rekord, ale w zapisaie oryginalnym, bo teraz musze wpisywac literki w wielkosci identycznej jak zapisane w bazie.

      1. No co za problem , pachura 28/04/07 22:28
        select * from osoby where UPPER(nazwisko) like 'KOWALSK%'

        Może ten zewnętrzny parametr wrzucasz źle - nie zamieniwszy go na duże litery? Wówczas takie coś musi zadziałać:

        select * from osoby where UPPER(nazwisko) like UPPER('kOwALsKi%')

        1. zdecydowanie , bwana 28/04/07 22:32
          nawiasem, widzę, że oraklem pojechałeś:)

          "you don't need your smile when I cut
          your throat"

      2. hmm ale czym to wybierasz? , Wedrowiec 28/04/07 23:45
        daj sql'a;) jak like bierze pod uwagę wielkość znaków to poszukaj czegoś typu ilike (postgres). Jak jest w tej bazie - nie mam pojęcia ale może chodzić o to :)

        "Widziałem podręczniki
        Gdzie jest czarno na białym
        Że jesteście po**bani"

      3. ... , belzee 29/04/07 00:05
        w polu jest wartosc 'AaA'.

        wykonuje zapytanie "SELECT * FROM porady WHERE tytul like '%AaA%' ORDER BY id DESC" - znaleziono

        wykonuje zapytanie "SELECT * FROM porady WHERE tytul like '%aaa%' ORDER BY id DESC" - nie znaleziono

        wykonuje zapytanie "SELECT * FROM porady WHERE tytul like '%Aaa%' ORDER BY id DESC" - nie znaleziono

        wykonuje zapytanie "SELECT * FROM porady WHERE tytul like '%aaA%' ORDER BY id DESC" - nie znaleziono

        wykonuje zapytanie "SELECT * FROM porady WHERE UPPER(tytul) like UPPER('%aAa%') ORDER BY id DESC" - znaleziono ALE zwrocony tytul jest postaci 'AAA', a ja potrzebuje jak w oryginale 'AaA'.

        Wedrowiec, niestety w tej bazie nie ma ILIKE :/
        chyba bede to musial jakos obejsc kilkoma zapytaniami...

        1. no nie gadaj , bwana 29/04/07 00:26
          "wykonuje zapytanie "SELECT * FROM porady WHERE UPPER(tytul) like UPPER('%aAa%') ORDER BY id DESC" - znaleziono ALE zwrocony tytul jest postaci 'AAA', a ja potrzebuje jak w oryginale 'AaA'" zwróci Ci wiersze spełniające warunek w postaci oryginalnej. To co opisałeś pewnie zapisane jest:

          "SELECT upper(tytul) FROM porady WHERE UPPER(tytul) like UPPER('%aAa%') ORDER BY id DESC"

          sprawdź no dobrze:-)

          "you don't need your smile when I cut
          your throat"

          1. bwana , belzee 29/04/07 08:12
            nie mam co sprawdzac bo ctrl+c i ctrl+v chyba sie nie myli, co? :) btw. nie wiem czy zwrociles uwage, ale ja nie dzialam na rasowej bazie danych (mssql, mysql, postgre czy innej) tylko na bazie tekstowej z nieco uproszczona obsluga sql'a. mam zalaczyc zrzut ekranu? ;)

            1. A zatem są 3 możliwości: , pachura 29/04/07 09:16
              1. Przez pomyłkę zrobiłeś uppercase na danych przed umieszczeniem ich w bazie.

              2. Twoja egzotyczna baza jest kompletnie niekompatybilna z najbardziej podstawową funkcjonalnością SQL-a.

              3. Jednak coś pokręciłeś ;)

              PS. A spróbuj "SELECT * FROM porady WHERE UPPER(tytul) like UPPER('%aAa%') ORDER BY id DESC" na innych tabelach, albo na innych kolumnach tekstowych w tej samej tabeli?

              1. ... , belzee 29/04/07 10:48
                1. nie ma takiej mozliwosci bo kiedy robie zwykly select * from... to dostaja to co chce

                3. to jest tak banalne ze nie ma co pokrecic ;)

                najbardziej prawdopodobna jest mozliwosc 2. problem w tym ze nie moge sie jej pozbyc ;)

                dzieki za checi, postaram sie to jakos obejsc...

              2. lub czwarta , bwana 29/04/07 11:41
                gdzieś między zafeczowaniem wiersza z tabeli przez kursor, a wyświetleniem go poddany został konwersji do wielkich liter.

                "you don't need your smile when I cut
                your throat"

                1. ... , belzee 29/04/07 19:06
                  pewnie tak, w koncu to nie rasowa baza tylko namiastka ;) kusi mnie aby napisac do autora i zglosic ten fakt.

                  1. SQLite , pachura 29/04/07 19:35
                    Przejdź na SQLite, na pewno działa i nie wymaga serwera. Zdaje się że jest automatycznie dołączany do PHP od którejśtam wersji.

                    Jednak moim zdaniem na 99% coś pokręciłeś, według mnie nie jest możliwe żeby nawet "namiastkowa" baza działała w taki sposób jak mówisz ;)

                    1. ... , belzee 29/04/07 22:35
                      sqlite... dobry pomysl, musze sie zapoznac... ;)

                    2. ... , belzee 1/05/07 11:43
                      niestety sqlite odpada :/
                      easyisp.pl nie obsluguje tej bazy. prawdziwy 'profeszynal prowajder'...

    
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL