• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

SQL wartosci w kolumnach

VPS Starter Arubacloud
0 głosów
896 wizyt
pytanie zadane 16 maja 2018 w SQL, bazy danych przez kukisp Nowicjusz (150 p.)
Cześć, wykonując zapytanie do bazy danych w kolumnach mam wartości t,f co oznacza true, false.

Z zapytania eksportuje plik csv, który następnie wgrywam do programu który w danych kolumnach interpretuje tylko wartości Tak, Nie.

Czy jest możliwość z poziomu zapytania uzyskania w kolumnach wartości Tak, Nie pomimo rzeczywistej wartości t,f, by uniknąć konieczności zmieniania pliku CSV ręcznie?

3 odpowiedzi

0 głosów
odpowiedź 16 maja 2018 przez maciej.tokarz Nałogowiec (27,260 p.)

Witaj, to t/f masz w polu typu CHAR/VARCHAR? Do przechowywania wartości boolean służy typ BIT.

M.

komentarz 16 maja 2018 przez kukisp Nowicjusz (150 p.)

Jako varchar, poradziłem sobie stosując CASE WHEN :)

CASE 
WHEN kolumna= 'f' THEN 'Nie'
ELSE 'Tak'

 

komentarz 16 maja 2018 przez maciej.tokarz Nałogowiec (27,260 p.)

Zmień typ na właściwy, a jak potem to 0/1 będziesz chciał mieć w formie tak/nie możesz skorzystać z tego CASE WHEN na przykład.

M.

0 głosów
odpowiedź 16 maja 2018 przez Chess Szeryf (76,710 p.)
edycja 16 maja 2018 przez Chess
MariaDB [turqus]> show create table enum_field\G
*************************** 1. row ***************************
       Table: enum_field
Create Table: CREATE TABLE `enum_field` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `col1` char(1) DEFAULT NULL,
  `col2` char(1) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `enum_to` (`col1`,`col2`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1

MariaDB [turqus]> show create table temp_table\G
*************************** 1. row ***************************
       Table: temp_table
Create Table: CREATE TEMPORARY TABLE `temp_table` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `random_value` varchar(20) DEFAULT NULL,
  `random_value2` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1
delimiter //
MariaDB [turqus]> show create procedure procx\G
*************************** 1. row ***************************
           Procedure: procx
            sql_mode: NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    Create Procedure: CREATE DEFINER=``@`localhost` PROCEDURE `procx`()
begin
update temp_table set random_value = 'Tak' where random_value='t';
update temp_table set random_value = 'Nie' where random_value='f';
update temp_table set random_value2= 'Tak' where random_value2='t';
update temp_table set random_value2= 'Nie' where random_value2='f';
end
character_set_client: utf8
collation_connection: utf8_unicode_ci
  Database Collation: latin1_swedish_ci
delimiter ;
MariaDB [turqus]> insert into temp_table (random_value,random_value2)
     select enum_field.col1,enum_field.col2
     from enum_field;

Po wywołaniu procedury tym poleceniem:

call procx;

W tabeli tymczasowej, która będzie istnieć tylko do ostatniej sesji, czyli najprawdopodobniej do zresetowania server'a MySQL dane zostaną zamienione.

Nie da się chyba założyć alias'u na wartość w tabeli.

komentarz 20 maja 2018 przez Catalonya1992 Mądrala (5,440 p.)
Rozwiązań jest kilka w zależności od sytuacji. Ten program to Twoja aplikacja? Możesz tam zapisać prostego ifa i po sprawie. Jeśli nie to użyj case tak jak wyzej tylko zwróc uwagę na typy danych. Możesz też dane umieścić w jakieś innej tabeli, puścic update by zmienić wartości w tej kolumnie i dopiero to wykesportować.
0 głosów
odpowiedź 6 czerwca 2018 przez Catalonya1992 Mądrala (5,440 p.)
Inna opcja to napisanie triggera, który sprawdza wartość podaną do tej kolumny i tam robisz zamianę.

Podobne pytania

0 głosów
1 odpowiedź 259 wizyt
0 głosów
1 odpowiedź 453 wizyt
pytanie zadane 10 maja 2022 w SQL, bazy danych przez alpha.netrunner Gaduła (4,810 p.)
+2 głosów
1 odpowiedź 423 wizyt
pytanie zadane 19 lutego 2022 w SQL, bazy danych przez eugi Użytkownik (570 p.)

92,957 zapytań

141,916 odpowiedzi

321,148 komentarzy

62,287 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...