Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ujednolicenie wielkości liter
Forum PHP.pl > Forum > Bazy danych > Oracle
fuchsd
Witam, proszę o pomoc.

Mam baze Oracle + kod w php.
Potrzebuję wyszukać dane z bazy.
Niestety dane pomiędzy formularzem(wpisywane ręcznie) nie są jednolite z tym, co jest w bazie
- pisane wielkimi lub małymi literami.

W przypadku wyszukiwania słowa np. "Dom" - mimo, że istnieje takowe w bazie, ale wpisane małymi literami
("dom") - moja wyszukiwarka nic nie pokazuje.

W jaki sposób można przekonwertować dane, tak aby były spojne tj.
to co wpisze user w formularzu - zgodne z tym co jest wprowadzone do bazy

Serdecznie dziękuję za pomoc.
redman2
  1. ...WHERE kolumna = upper('DOM');
fuchsd
Dziękuję.

Niestety dane są wymieszane - raz jest dużymi, raz małymi.
Osoba, która wprowadzała dane do bazy, raz wprowadzała wielkimi literami, raz małymi a raz
i nie mam nad tym żadnego panowania.
Nie jestem też w stanie przewidzieć, co user mi wpisze w formularz.

Chciałam to wszystko ujednolicić do jednego formatu.
Jak można to zrobić ?
redman2
No właśnie tak, jak napisałem wcześniej. Nie jest ważne co wpisze. Ważne co ty przekazujesz do bazy.
Jeżeli poda jakąś zmienną Dom, dom, lub DoM, warunkeim upper(':zmienna') wymusisz użycie funkcji zmieniającej wszystkie litery na duże.


  1. SQL> CREATE TABLE test (kolumna varchar2(10));
  2.  
  3. TABLE created.
  4.  
  5. SQL> INSERT INTO test VALUES ('dom');
  6.  
  7. 1 row created.
  8.  
  9. SQL> INSERT INTO test VALUES ('DoM');
  10.  
  11. 1 row created.
  12.  
  13. SQL> INSERT INTO test VALUES ('DOM');
  14.  
  15. 1 row created.
  16.  
  17. SQL> SELECT * FROM test WHERE upper(kolumna)='DOM';
  18.  
  19. KOLUMNA
  20. ----------
  21. dom
  22. DoM
  23. DOM
fuchsd
Dziękuję bardzo, o to chodzi.
A jak w to wpleść jeszcze LIKE i % ?


Dziękuję za SQLa, natomiast jak w zmienną wpisuję :

  1. SELECT * FROM test WHERE upper(kolumna)='dom';


to już kod nic nie wyszukuje. Dla 'DOM' działa ok.

Dziękuję za SQLa, natomiast jak w zmienną wpisuję :

  1. SELECT * FROM test WHERE upper(kolumna)='dom';


to już kod nic nie wyszukuje. Dla 'DOM' działa ok.

Dziękuję za SQLa, natomiast jak w zmienną wpisuję :

  1. SELECT * FROM test WHERE upper(kolumna)='dom';


to już kod nic nie wyszukuje. Dla 'DOM' działa ok.

Ok, poradziłam sobie smile.gif serdecznie dziękuję za pomoc i miłego weekendu smile.gif
redman2
Dlatego też upper powinno być z dwóch stron

  1. WHERE upper(kolumna)=upper(:zmienna)
fuchsd
Jest ok:) serdecznie dziękuję za pomoc
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.