Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Возврат boolean-значения / 25 сообщений из 29, страница 1 из 2
12.01.2018, 14:39
    #39583330
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат boolean-значения
Здравствуйте!

В поле пишу выражение, который возвращает "Да" или "Нет".
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT
    ...
    CASE WHEN NOT(Т2.Поле1 IS NULL) THEN 'Да' Else 'Нет' END
FROM
    Таблица1 Т1
LEFT JOIN
    Таблица2 Т2
...

Запрос работает.

А надо возвращать True или False. Если вместо "Да" написать True и вместо "Нет" написать False, то пишет недопустимое имя столбца.

Как правильно написать?
...
Рейтинг: 0 / 0
12.01.2018, 14:41
    #39583332
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат boolean-значения
ferzmikk,

sql пишет? у вас там вообще нет "имя столбца."
...
Рейтинг: 0 / 0
12.01.2018, 14:46
    #39583336
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат boolean-значения
ferzmikkЕсли вместо "Да" написать True и вместо "Нет" написать False, то пишет недопустимое имя столбца.Замените 'За' на 'True', а 'Нет' на 'False'.
Типа BOOLEAN в MSSQL до сих пор нет.
...
Рейтинг: 0 / 0
12.01.2018, 14:47
    #39583337
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат boolean-значения
TaPaKferzmikk,
sql пишет? у вас там вообще нет "имя столбца."
ferzmikk,
пятница да?
Код: sql
1.
2.
3.
4.
CASE WHEN NOT(Т2.Поле1 IS NULL) THEN 'Да' Else 'Нет' END
CASE WHEN NOT(Т2.Поле1 IS NULL) THEN True Else False END -- конечно, ошибка, столбцов True/False не существует.
CASE WHEN NOT(Т2.Поле1 IS NULL) THEN 'True' Else 'False' END
CONVERT( [TINYINT|BIT], CASE WHEN NOT(Т2.Поле1 IS NULL) THEN 1 Else 0 END ) -- нужное оставить
...
Рейтинг: 0 / 0
12.01.2018, 14:51
    #39583340
Возврат boolean-значения
iap,

справедливости ради нужно сказать, что его не только в MS SQL Server нет.... Изначально проблема в том, что его нет в ANSI-стандарте языка SQL. Следовательно, разработчики СУБД и не спешат включать его в состав своих диалектов SQL
...
Рейтинг: 0 / 0
12.01.2018, 15:43
    #39583358
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат boolean-значения
Руслан Дамирович
Код: sql
1.
CONVERT( [TINYINT|BIT], CASE WHEN NOT(Т2.Поле1 IS NULL) THEN 1 Else 0 END ) -- нужное оставить

Код: sql
1.
2.
3.
4.
CONVERT( TINYINT, CASE WHEN NOT(Т2.Поле1 IS NULL) THEN 1 Else 0 END )
CONVERT( BIT, CASE WHEN NOT(Т2.Поле1 IS NULL) THEN 1 Else 0 END )
CAST(CASE WHEN NOT(Т2.Поле1 IS NULL) THEN 1 Else 0 END AS BIT)
CAST(CASE WHEN NOT(Т2.Поле1 IS NULL) THEN 1 Else 0 END AS TINYINT)


Каждая запись возвращает не True/False, а 0/1.
...
Рейтинг: 0 / 0
12.01.2018, 15:44
    #39583360
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат boolean-значения
ferzmikk,

авторКаждая запись возвращает не True/False, а 0/1. это всё равно будут просто буквы, интерпретируйте 1/0
...
Рейтинг: 0 / 0
12.01.2018, 17:14
    #39583423
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат boolean-значения
Баловство... Это клиент должен делать.

Код: sql
1.
CASE WHEN NOT(Т2.Поле1 IS NULL) THEN 'Да' Else 'Нет' END



А где алиас столбца? Код должен предсказуемо работать.
...
Рейтинг: 0 / 0
12.01.2018, 20:03
    #39583522
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат boolean-значения
Я правильно понимаю, что в основных запросах, должно выводиться 1/0, а на последующих запросах выводить "True"/"False" как текст?
...
Рейтинг: 0 / 0
12.01.2018, 20:10
    #39583524
Возврат boolean-значения
ferzmikk,

сразу можешь выводить словами 'false'/'true'. или даже 'ложь','клади' 'правда'. никто ж не запрещает... главное ты должен понимать - что возвращать ты будешь либо числовое поле (0/1), либо текстовое ('false'/'true'), но никак не поле с логическим типом boolean.
...
Рейтинг: 0 / 0
12.01.2018, 20:17
    #39583527
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат boolean-значения
Понял. Спасибо!
...
Рейтинг: 0 / 0
13.01.2018, 10:35
    #39583635
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат boolean-значения
Добрый Э - Эхferzmikk,

сразу можешь выводить словами 'false'/'true'. или даже 'ложь','клади' 'правда'. никто ж не запрещает... главное ты должен понимать - что возвращать ты будешь либо числовое поле (0/1), либо текстовое ('false'/'true'), но никак не поле с логическим типом boolean.

Ты, наверное не в курсе, все "логические типы" - суть 0/1.
Поэтому bit можно смело конвертить в bool на клиенте.
...
Рейтинг: 0 / 0
13.01.2018, 14:20
    #39583679
Возврат boolean-значения
aleks222

Ты, наверное не в курсе, но вся компьютерная математика - суть 0/1.
Пара-тройка не взлетевших проекта с трехзначной логикой - не всчёт
...
Рейтинг: 0 / 0
13.01.2018, 14:39
    #39583686
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат boolean-значения
Добрый Э - Эхaleks222

Ты, наверное не в курсе, но вся компьютерная математика - суть 0/1.
Пара-тройка не взлетевших проекта с трехзначной логикой - не всчётSQL разве не взлетел?
...
Рейтинг: 0 / 0
13.01.2018, 15:46
    #39583705
Возврат boolean-значения
iap,

не стоит путать значение и его отсутствие... Если что, я имел ввиду такое
...
Рейтинг: 0 / 0
15.01.2018, 10:36
    #39584214
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат boolean-значения
Добрый Э - Эхiap,

не стоит путать значение и его отсутствие... Если что, я имел ввиду такое
как раз sql и реализует трёхзначную логику, что бы вы не имели ввиду
...
Рейтинг: 0 / 0
15.01.2018, 11:54
    #39584271
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат boolean-значения
TaPaKДобрый Э - Эхiap,
не стоит путать значение и его отсутствие...
как раз sql и реализует трёхзначную логику, что бы вы не имели ввиду
Троичная логика != троичное представление данных, реализованное на двоичной логике.
...
Рейтинг: 0 / 0
15.01.2018, 11:56
    #39584273
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат boolean-значения
Руслан Дамирович,
Добрый Э - Эхтрехзначной логикой
...
Рейтинг: 0 / 0
15.01.2018, 11:58
    #39584277
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат boolean-значения
Руслан ДамировичTaPaKпропущено...

как раз sql и реализует трёхзначную логику, что бы вы не имели ввиду
Троичная логика != троичное представление данных, реализованное на двоичной логике.


авторТы, наверное не в курсе, но вся компьютерная математика - суть 0/1.
Пара-тройка не взлетевших проекта с трехзначной логикой - не всчёт
логика, математика и неожиданно хранинение... ну да...
...
Рейтинг: 0 / 0
15.01.2018, 12:23
    #39584309
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат boolean-значения
TaPaKлогика, математика и неожиданно хранинение... ну да...
Неожиданно что?
Что в SQL не реализована троичная логика, а есть лишь неопределенное значение, которое к троичной логике имеет такое же отношение, как астрология к астрономии?
...
Рейтинг: 0 / 0
15.01.2018, 12:25
    #39584310
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат boolean-значения
Руслан ДамировичTaPaKлогика, математика и неожиданно хранинение... ну да...
Неожиданно что?
Что в SQL не реализована троичная логика, а есть лишь неопределенное значение, которое к троичной логике имеет такое же отношение, как астрология к астрономии?А попроще? Что не устраивает в троичной логике SQL, никак не пойму.
...
Рейтинг: 0 / 0
15.01.2018, 12:27
    #39584312
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат boolean-значения
Руслан ДамировичTaPaKлогика, математика и неожиданно хранинение... ну да...
Неожиданно что?
Что в SQL не реализована троичная логика, а есть лишь неопределенное значение, которое к троичной логике имеет такое же отношение, как астрология к астрономии?
ну что тут скажешь, нет так нет
авторsystems in which there are three truth values indicating true, false and some indeterminate third value

https://en.wikipedia.org/wiki/Three-valued_logic
https://en.wikibooks.org/wiki/Structured_Query_Language/NULLs_and_the_Three_Valued_Logic
https://sqlserverfast.com/blog/hugo/2007/07/the-logic-of-three-valued-logic/
...
Рейтинг: 0 / 0
15.01.2018, 12:35
    #39584318
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат boolean-значения
Я тебе тоже могу потыкать ссылками.
Покажи мне лучше код SQL, где True AND NULL = True, а NULL AND True = NULL.
Тогда я вместе с тобой порадуюсь за реализацию троичной логики в SQL.
...
Рейтинг: 0 / 0
15.01.2018, 13:17
    #39584363
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат boolean-значения
Руслан ДамировичTrue AND NULL = True, а NULL AND True = NULL.

а с чего это A LogicAnd B должно быть неравно B LogicAnd A
...
Рейтинг: 0 / 0
15.01.2018, 13:23
    #39584367
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат boolean-значения
msLex,

возмущенец хочет сказать(в какой-то странной форме) что в предикате sql всё сведётся к true/false, что идёт в разрез с его пониманием троичной логики в чистом виде, но не отменяет присутсвия её в sql
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Возврат boolean-значения / 25 сообщений из 29, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]