Mysql rzutowanie typu BINARY do CHAR

0

Mam pytanie jak najlepiej rozwiązać problem aby serwer w wyniku zapytania zawsze zwracał wartości kolumn przekonwertowane
z typu BINARY na CHAR - dla każdej wartości typu binary.

Chodzi o to aby nie było konieczności stosować zapisu:

select cast(a as char), cast(b as char), cast(c as char) from table xxx;
jeżeli a,b,c to typy znakowe BINARY, i możliwe było stosowanie
poleceń typu select * from xxx z automatyczną konwersją wszystkich typów BINARY na CHAR ?

PS. Odpada konwersja tabel i baz, mogło by to być zrealizowane wyłącznie w formie polecenia dodanego do "query string'a" albo jakiegoś przyrostka
dodanego do zapytania przed średnikiem

0

To aż za bardzo brzmi na problem X/Y - dlaczego odpada konwersja baz i w jaki sposób doszedłeś do tak zagmatwanych zapytań?

0

Baza MySQL (mariadb) wtyczką "connect" jest połączona z archaicznymi DBF'ami w których kodowanie znaków nie dość że też archaiczne to jeszcze mieszane - Mazovia + CP852 (w zależności czy użytkownik aplikacji DOSowej klepie polskie znaki lewym czy prawym altem). Owa aplikacja działa po dziś dzień i oczywiście nic z kodowaniem znaków w niej ruszyć się nie da.

Dlatego wszelkie tabele w bazie mariadb mam ustawione z kodowaniem "binary" a konwersja znaków do utf-8 odbywa się już poza mysql'em (php). Ale to jest przypadek aplikacji webowej gdzie jest git i wszystko działa.

Do celów innej aplikacji (VCL Form Borland 10.3) potrzebuję by dostawał on typ CHAR w rezultatach zapytania a nie BINARY. Oczywiście mogę tak jak w php napisać sobie konwerter, ale na szybko potrzebuję jakiegoś rozwiązania tak by w ogóle było widać znaki ASCII a nie "(BYTES)" w komórkach DBGrid'a do którego trafiają dane.

Także problem bardziej złożony niż X/Y hehe...

1

Może jakieś czary mary za pomocą widoków? Za information schema można wyciągnąć tabele, które mają jakąś kolumnę typu BINARY i dla takich tabel wygenerować skrypt tworzący widoki w schemacie użytkownika wykorzystywanego przez aplikację VCL...Z information schema można wyciągnąć informacje o liśćie kolumn per tabelka, typach danych, więc spokojnie można takie skrypty generować.

Widoki mogłyby być tworzone na zasadzie: CREATE VIEW USER.TABELKA AS SELECT CAST(a as char), ... from TABLE_OWNER.TABELKA;.

Załatwi to zapytania, ale nie wiem czy MariaDB ma triggery typu "INSTEAD OF", które pozwoliłyby podczepić logikę pod UPDATE/INSERT/DELETE na widoku i aktualizować dane..

0

Dzięki za podpowiedź, to będzie rozwiązanie w sam raz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1