Wpis z mikrobloga

kruca fuks dość
ile można używać oracle'a
ani to dobre, ani wydajne, a jakie drogie #!$%@?
no i fuckup murowany, toć to gołymi łapami w C ugniatane
żeby to jeszcze sensownie zaprojektowane było, a weź tu zmień coś w konfigu
stąd te dropy na prodzie
tfuu, ochydne
co te korpo w tym widzą

#bazydanych #oracle #programowanie #studbaza #heheszki
Darksands - kruca fuks dość
ile można używać oracle'a
ani to dobre, ani wydajne, a ...

źródło: comment_1624100828t9YfPgQpnqcmIXISOs6rPd.jpg

Pobierz
  • 21
W oracle, w oracle.

W każdej innej bazie która znam to działa jak piszesz, poza oracle ( ͡° ͜ʖ ͡°)


@edgar_k: Albo ja rozumiem jakoś inaczej Twoją tezę albo wyjaśnij proszę precyzyjniej o co Ci chodzi bo null i pusty string to nie to samo w Oracle. Dowód:

SQL> select * from dual WHERE NULL = '';

no rows selected
@edgar_k: @Darksands co się tak czepiliście tego nulla? co w tym bolesnego że spać nie możecie? przeszliście z jakiegoś mssqla czy co:) Chyba gdzieś w okolicy oracle9 to powstało i przy varchar2. Po prostu insert '' jest konwertowane na insert nulla i tyle filozofii. Podejrzewam, że mają sporo korzyści w CBO przy takim podejściu. Rozróznianie pustego stringa od nulla według mnie jest bezsensowne. Nawet jak standard tak każe. Zawsze możecie użyć
@edgar_k: @Darksands co się tak czepiliście tego nulla? co w tym bolesnego że spać nie możecie? przeszliście z jakiegoś mssqla czy co:) Chyba gdzieś w okolicy oracle9 to powstało i przy varchar2. Po prostu insert '' jest konwertowane na insert nulla i tyle filozofii. Podejrzewam, że mają sporo korzyści w CBO przy takim podejściu. Rozróznianie pustego stringa od nulla według mnie jest bezsensowne. Nawet jak standard tak każe. Zawsze możecie użyć
@msilent: ?! To akurat powinno zwrócić rekordów wierszy w każdej bazie. Co chciałeś tutaj przekazać?

PS: Tam wyżej edgar ma rację. Oracle istotnie wewnętrznie "optymalizuje" pusty string do nulla na potrzeby porównań.
@maniac777: To zobacz ile zwróci. W oracle nie ma czegoś takiego jak pusty string/optymalizacja na potrzeby porównań. Cokolwiek przyrównasz do null'a to masz false. Musiałbyś pisać "is null" stąd te dziwaczne porównania w oracle tj;

(a is null and b is null) or a=b
tylko takie porównanie poprawnie porówna 2 kolumny o typie np. varchar2. Pusty string nie istnieje w Oracle, zawsze to NULL a NULL'a nie ma sensu porównywać operatorem
To zobacz ile zwróci.


@msilent: No sprawdziłem:
- Oracle 12.2 - zero rekordów
- Postgres 12 - zero rekordów
- MariaDB 10 - zero rekordów
- MySQL - zero rekordów
- MSSQL - zero rekordów

W oracle nie ma czegoś takiego jak pusty string/optymalizacja na potrzeby porównań.


@msilent: Z mojej perspektywy wygląda to jakby "optymializował" (celowo w cudzysłowie) dla celów porównań. W tabeli pusty string jest faktycznie zapisywany i jest