Pokaż jakie masz dane, jak robiłeś tego casta i co to za baza. I pokaż ten bląd, bo bez tego to zgadywana jak ze szklanej kuli.
@S4t, @ZrobieDobrze : Faktycznie trochę za mało podałem danych za co przepraszam.
Tytułem wstępu to ja o bazach mało wiem, tyle co potrafię stworzyć proste tabele i relacje, a nauka o bazach danych wychodzi przy okazji nauki Javy.
widok tworzę w liquibase. Baza jest H2.
Masz komunikat o błędzie. Tobie to może nic nie mówi, ale to jest generalnie informacja skrajnie użyteczna co poprawić.
Tzw biurwy w l 1990-2000 wyłączały zasilanie w komputerze "bo komputer coś napisał".
Wtedy wyłącznik to była wajcha z prawej strony.
Chcesz tak samo ?
Jak najbardziej rozumiem tylko, w tym przypadku nie ma żadnej użytecznej informacji od liquibase.
<createView viewName="view">
SELECT
CASE
WHEN tutaj instrukcja THEN
DATEDIFF(tutaj po prostu wyliczanie różnicy datowej w latach)
END
AS nazwakolumny
FROM DATABASE
I w tym przypadku domyślnie typ danych w kolumnie to BIGINT
. Chciałbym wiedzieć jak się castuje na VARCHAR
czy INT
. A robiłem przeróżne opcje:
1.
<createView viewName="view">
SELECT
CASE
WHEN tutaj instrukcja THEN
CAST(DATEDIFF(tutaj po prostu wyliczanie różnicy datowej w latach) AS INT)
END
AS nazwakolumny
FROM DATABASE
<createView viewName="view">
SELECT
CAST((CASE
WHEN tutaj instrukcja THEN
DATEDIFF(tutaj po prostu wyliczanie różnicy datowej w latach)
END) AS INT)
AS nazwakolumny
FROM DATABASE
<createView viewName="view">
SELECT
FIRST_DATA,
CASE
WHEN tutaj instrukcja THEN
DATEDIFF(tutaj po prostu wyliczanie różnicy datowej w latach)
END AS INT
AS CAST(nazwakolumny AS INT)
FROM DATABASE
I do wszystkich opcji też dodawałem przed SELECT
i też zamiennie CAST
używałem z CONVERT
. W przypadku 1. w ogóle nie zamienia, a program startuje. W przypadkach 2 i 3 albo wysypuje błąd, że jest ";'', a spodziewane jest co innego, albo, że FIRST_DATA
nie istnieje w DATABASE
. Więc są to błędy, które chyba mało komu cokolwiek mówią, tak jak w Javie one występują, dlatego ich nie podawałem.
I chcę, aby nazwakolumny
była innym typem niż domyślnie ustawia ta operacja. Próbowałem jakieś operacje zrobić typu CAST()
czy CONVERT
, ale był błąd składniowy, a jak chcę zrobić UPDATE
to oczywiście nie ma takiej możliwości.
Nie czytałem wszystkich odpowiedzi, ale myślę że problem jest tutaj właśnie. Nie robi się UPDATE'ów do widoków. Ja wiem że w najprostszym przypadku niektóre brzydkie bazy na to pozwalają, ale ogólnie to zawsze się w końcu wywali jak widok się skomplikuje. Updaty robi się do tabel, a widoki są tylko do odczytu
Tak jak napisałem w komentarzu - dzięki wielkie, ale chodziło mi właśnie, że wiem, że niemożliwe są operacje na widoku typu UPDATE
, bo to widok niezmaterializowany, a nie faktycznie tabela. Ale jestem wdzięczny za odpowiedź.