Dev's und DBA's, ich glaube, ich habe einen Fehler in SQL 2008 R2 gefunden, es sei denn, einer von Ihnen kann das unten erklären. Können Sie bitte erklären, warum TestID in diesem Szenario anstelle von INT in NUMERIC umgewandelt wird? Bitte beachten Sie, dass dies nur ein Beispiel ist, um das Problem zu zeigen, auf das ich gestoßen bin, während ich etwas Größeres ausprobiert habe, wie z.B. ein Automatisierungsskript, das Daten konvertiert, die aus Excel oder Notepad importiert wurden und die nvarchar/float zu den entsprechenden Datentypen int, numeric, datetime, varchar konvertieren wird.
CREATE TABLE #KorrupteDaten(
TestID VARCHAR(100)
);
GO
INSERT INTO #KorrupteDaten
VALUES ('1'),
('2');
SELECT
CASE
WHEN TestID LIKE '[1-9]%' AND TestID NOT LIKE '0%' THEN CAST(TestID AS INT)
WHEN TestID LIKE '0%' THEN CAST(TestID AS NUMERIC(12,2))
END AS TestID
INTO #FesteDaten
FROM #KorrupteDaten
SELECT *
FROM #FesteDaten