У меня есть таблица с столбцом Days
. В столбце Days
хранится строка с разделителями-запятыми, представляющая дни недели. Например, значение 1,2
будет представлять Sunday, Monday
. Вместо того, чтобы хранить эту информацию в виде строки с разделителями-запятыми, я хочу преобразовать ее в JSON и сохранить ее в столбце Frequency
в той же таблице. Например, запись с Days
значения 1,2
должна быть обновлена, чтобы сохранить следующее в его Frequency
колонка:Обновление столбца базы данных со строкой, построенной на основе значения другого столбца
'{"weekly":"interval":1,"Sunday":true,"Monday":true,"Tuesday":false,"Wednesday":false,"Thursday":false,"Friday":false,"Saturday":false}}'
Я нашел способ сделать это с помощью оператора выбора, предполагая, что есть только одна цифра в Days
колонки так:
UPDATE SCH_ITM
SET
FREQUENCY =
CASE
WHEN SCH_ITM.DAYS = 1 THEN '{"weekly":{"interval":1,"Sunday":true,"Monday":false,"Tuesday":false,"Wednesday":false,"Thursday":false,"Friday":false,"Saturday":false}}'
WHEN SCH_ITM.DAYS = 2 THEN '{"weekly":{"interval":1,"Sunday":false,"Monday":true,"Tuesday":false,"Wednesday":false,"Thursday":false,"Friday":false,"Saturday":false}}'
WHEN SCH_ITM.DAYS = 3 THEN '{"weekly":{"interval":1,"Sunday":false,"Monday":false,"Tuesday":true,"Wednesday":false,"Thursday":false,"Friday":false,"Saturday":false}}'
WHEN SCH_ITM.DAYS = 4 THEN '{"weekly":{"interval":1,"Sunday":false,"Monday":false,"Tuesday":false,"Wednesday":true,"Thursday":false,"Friday":false,"Saturday":false}}'
WHEN SCH_ITM.DAYS = 5 THEN '{"weekly":{"interval":1,"Sunday":false,"Monday":false,"Tuesday":false,"Wednesday":false,"Thursday":true,"Friday":false,"Saturday":false}}'
WHEN SCH_ITM.DAYS = 6 THEN '{"weekly":{"interval":1,"Sunday":false,"Monday":false,"Tuesday":false,"Wednesday":false,"Thursday":false,"Friday":true,"Saturday":false}}'
WHEN SCH_ITM.DAYS = 7 THEN '{"weekly":{"interval":1,"Sunday":false,"Monday":false,"Tuesday":false,"Wednesday":false,"Thursday":false,"Friday":false,"Saturday":true}}'
END
WHERE SCH_TYPE = 'W';
Однако я не могу показаться, чтобы выяснить, в эффективный способ для обработки преобразования значения, такие как 1,5
в правильном представлении JSON. Очевидно, я мог бы написать все возможные перестановки, но, безусловно, лучший способ?
У меня нет ответа для вас, но мне интересно, почему вы не будете использовать DATEPART() и избегаете столбца все вместе. Возможно, у вас нет колонки даты, но мне просто интересно. – scsimon