Wenn die Felder ganze Zahlen sind:
SELECT CAST(day1 AS VARCHAR(25))+'-'+CAST(day1+day2 AS VARCHAR(25))
FROM DaysTable
WHERE day1 is Not null AND day2 is Not null
Wenn sie Strings sind, könnten Sie die erste CAST()
weglassen und würde eine CAST()
um day1
hinzufügen müssen integer zusätzlich zu veran :
SELECT day1+'-'+CAST(CAST(day1 AS INT)+day2 AS VARCHAR(25))
FROM DaysTable
WHERE day1 is Not null AND day2 is Not null
Zahlen sollten nicht als Zeichenfolgen gespeichert werden, außer in Fällen, in denen keine Berechnungen an ihnen vorgenommen werden und/oder führende Nullen wie SSN/Telefonnummern/CPT-Codes beibehalten werden sollen.
Fyi: SUBSTRING()
gibt einen Teil eines Strings (a ‚sub'set wenn man so will):
SELECT SUBSTRING('dog',1,2)
-- Returns 'do', from the first character, take 2 characters.
SUM()
ist nicht für das Hinzufügen von Werten in der gleichen Zeile benötigt, sondern wird stattdessen verwendet, wenn Sie wollen um Werte aus mehreren Zeilen zu aggregieren. Zum Hinzufügen oder Verketten benötigen Sie nur +
und ob die Verkettung oder Addition durch die dargestellten Datentypen bestimmt wird.
Sieht so aus, als ob Sie einige Gussformen vermissen. Versuchen Sie, Ihre Substrings umzuwandeln: SUBSTRING (CAST (day1 als nvarchar (2)), 1) usw. ... – Xipooo
Sie erwarten, eine Teilzeichenkette von etwas zu nehmen, das keine Zeichenkette ist? – Paparazzi
Wenn 2012+, können Sie concat() anstelle von cast() verwenden –