Ich habe eine Tabelle mit einer Spalte namens Days
. In der Spalte Days
wird eine durch Kommas getrennte Zeichenfolge gespeichert, die die Wochentage darstellt. Zum Beispiel würde der Wert 1,2
Sunday, Monday
darstellen. Anstatt diese Informationen als kommagetrennte Zeichenfolge zu speichern, möchte ich sie in JSON konvertieren und in einer Spalte namens Frequency
in derselben Tabelle speichern. Zum Beispiel wird ein Datensatz mit dem Days
Wert von 1,2
sollte folgenden speichern aktualisiert wird in er Frequency
Spalte ist:Aktualisieren der Datenbankspalte mit einer Zeichenfolge basierend auf dem Wert einer anderen Spalte
'{"weekly":"interval":1,"Sunday":true,"Monday":true,"Tuesday":false,"Wednesday":false,"Thursday":false,"Friday":false,"Saturday":false}}'
ich einen Weg gefunden, dies mit einem Fall Aussage zu tun, unter der Annahme, dass es nur eine Ziffer in dem ist Days
Spalte wie folgt:
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';
jedoch habe ich keine effecient Weg scheinen, um herauszufinden, zu handhaben einen Wert wie 1,5
in die richtige JSON Darstellung umgewandelt werden. Natürlich könnte ich jede mögliche Permutation aufschreiben, aber sicher ist ein besserer Weg?
Ich habe keine Antwort für Sie, aber ich frage mich, warum Sie DATEPART() nicht verwenden und die Spalte alle zusammen vermeiden. Vielleicht hast du keine Datumsspalte, aber ich habe mich nur gefragt. – scsimon