2016-03-12 2 views
0

Мне нужно запомнить в булевом поле слова «SI или NO» (подтверждение и отрицание на испанском языке). Но я могу использовать только эти:Добавить «SI или NO» в логическом поле

TRUE: 'T' 'истинный' 'у' 'да' 'на' '1'

FALSE: 'е' «ложь ' 'п' 'нет' 'от' '0'

create table sales 

(

    code   varchar(3), 
    sold   boolean, 
CONSTRAINT pk_codesale PRIMARY KEY (code) 

); 

я стараюсь, что:

insert into sales(code, sold) 
values('001','SI'); 

Edit:

Основываясь на пост Пайтона:

Я пытаюсь этот код (на основе AlexT82):

insert into sales(code, sold) 
(SELECT '001',CASE  
     WHEN 'FILLHERE' ='SI' THEN 't' 
     ELSE 'f' END 
); 
+0

что вы имеете в виду 'я должен хранить в булевой поле слова «SI или NO» 'boleean не сохраняет строку. \t Пожалуйста, прочитайте [** How-to-Ask **] (http://stackoverflow.com/help/how-to-ask) \t \t И вот отличное место для [** START **] (http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/), чтобы узнать, как улучшить качество вопроса и получить лучшие ответы. –

+0

какая база данных вы используете здесь? –

ответ

2

вы могли бы сделать это:

insert into sales(code, sold) 
(SELECT '001',CASE 
      WHEN 'FILLHERE' ='SI' THEN 1 
      ELSE 0 END 
); 

Где в части «FILLHERE» вы заполняете текст, в котором вы заполняете «SI» o r "NO" из вашего приложения.

+0

одиночная кавычка средняя строка ... Я думаю, вы имеете в виду двойную цитату '' ', чтобы указать имя поля –

+0

No Juan, Python указал, что ему нужно было вставить свою вставку в переменные, некоторые из них. Я просто обманываю этот код, чтобы позволить Python введите только его 2 значения в 2 местах .... (так что это не имя поля, а строка, вводимая приложением Python) – AlexT82

+0

Да где-то переменная средняя '' "или @ var' там вы используете константу. И если у вас есть константа, вы знаете значение и не нуждаетесь в 'case' –

0

Я пытаюсь этот код:

insert into sales(code, sold) 

(
    SELECT '001',CASE 

    WHEN 'FILLHERE' ='SI' THEN 't' 

    ELSE 'f' END 
); 
+0

Вы должны отредактировать свой вопрос вместо добавления ответа (я просто сделал это для вас) – dnoeth

+0

Хорошо, спасибо, я все еще новичок в этом – Python241820

0

как сообщение об ошибке указывает, что вам нужно CAST случай к BOOLEAN:

insert into sales(code, sold) 
values('001',cast(case when myVariable = 'NO' then 0 else 1 end as boolean)); 
+0

Здравствуйте, dnoeth с этой командой вставьте меня в таблицу всегда по умолчанию «t» , Спасибо за ответ – Python241820

+0

@ Python241820: Как уже сказал AlexT82, вы не можете * хранить * SI/NO в булевом столбце, вы можете перевести его только с помощью CASE (или вы используете 'true' /' false' для вставки) , Когда вам нужно вернуть SI/NO в SELECT, это будет отображаться, что обычно происходит в клиенте/приложении (или вы переводите его обратно в свой SELECT с помощью 'CASE WHEN продано THEN 'SI' ELSE 'NO' END' – dnoeth

Смежные вопросы