• 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
786 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,280 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,280 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ź 224 wizyt
0 głosów
1 odpowiedź 335 wizyt
pytanie zadane 10 maja 2022 w SQL, bazy danych przez alpha.netrunner Gaduła (4,690 p.)
+2 głosów
1 odpowiedź 331 wizyt
pytanie zadane 19 lutego 2022 w SQL, bazy danych przez eugi Użytkownik (570 p.)

92,454 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...