Nano Hash - криптовалюты, майнинг, программирование

Как создать таблицу с вычисляемым столбцом и оператором if?

Как и в заголовке, я пытаюсь создать таблицу на SQL Server, которая включает вычисляемый столбец с оператором if. Я уже создал базовые столбцы, в настоящее время пытаюсь добавить вычисляемый столбец с помощью ALTER TABLE.

В заявлении: ALTER table zgodnosc add proba as IIF([Zmiana_1_postoj] = 0 ,-50,[Zmiana_1]) float; я получил ошибку Неверный синтаксис рядом с 'float'. Я пробовал много комбинаций, всегда получая ошибки. Типы данных: Zmiana_postoj_1 - бит, Zmiana_1 - int. Кто-нибудь знает, как это правильно написать? Спасибо!


  • Отметьте свой вопрос с помощью базы данных, которую вы используете. 08.05.2020

Ответы:


1

Избавьтесь от float — SQL Server выведет тип данных из типа данных выражения.

Если вы замените -50 на -5E1 или -50e0, тип данных выражения станет float

ALTER table zgodnosc add proba as IIF([Zmiana_1_postoj] = 0 ,-50e0,[Zmiana_1]);

хотя вы можете предпочесть быть более явным об этом.

Лично я предпочитаю лаконичность IIF CASE WHEN ELSE END. Я сомневаюсь, что синтаксис вычисляемого столбца можно перенести на другие СУБД независимо от этого.

08.05.2020
  • Что делать, если я хочу использовать вычисляемый столбец в другом вычисляемом столбце? У меня есть эта ошибка: вычисляемый столбец «Doba» в таблице «zgodnosc» не может использоваться в другом определении вычисляемого столбца. и я не знаю, смогу ли я что-нибудь с этим сделать 08.05.2020
  • Вы не можете вкладывать вычисляемые столбцы. Если вы хотите повторно использовать одно в другом, вам нужно вместо этого скопировать определение, то есть базовое выражение IIF в этом случае. 08.05.2020

  • 2

    В SQL Server вы должны использовать:

    alter table zgodnosc add proba as (case when Imiana_1_postoj] = 0 then -50 else Zmiana_1 end) ;
    

    Тип не нужен. Дополнительные скобки необязательны. Я обычно включаю их по двум причинам. Во-первых, они нужны для check ограничений. Во-вторых, они хорошо справляются с задачей визуального разграничения выражения.

    Если вам нужен определенный тип, вы можете конвертировать/приводить:

    alter table zgodnosc add proba as (convert(float, (case when Imiana_1_postoj] = 0 then -50 else Zmiana_1 end))
    

    Примечание. Я настоятельно не рекомендую использовать IIF(). Он был введен в SQL Server для обратной совместимости с MS Access. CASE — это стандартный метод обработки условной логики в SQL.

    08.05.2020
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..