У меня есть два запроса T- SQL, которые используют Substring
и Charindex
для анализа текста в столбце nvarchar
. Они выполняются сами, но когда я пытаюсь объединить их, я получаю:
Сообщение 241, Уровень 16, Состояние 1, Строка 1
Преобразование не удалось при преобразовании даты и / или времени из строки символов .
Я думал, что это может быть из-за ошибки приведения datetime
, поэтому я удалил оператор приведения из этого кода:
CAST(CONCAT(SUBSTRING(ActivityDetail, CAST((CHARINDEX('Date/Time:', ActivityDetail) + 11) AS INT), 10), SUBSTRING(ActivityDetail, CAST((CHARINDEX('Date/Time:', ActivityDetail) + 23) AS INT), 9)) AS DATETIME) AS 'Start Time'
Я снова выполнил запрос и получил это ошибка:
Сообщение 8114, уровень 16, состояние 5, строка 1
Ошибка преобразования типа данных varchar в bigint.
I не есть CAST
оператор, который пытается преобразовать из varchar
в bigint
в моем коде.
I do имеет оконную функцию, которая использует созданный столбец datetime
для назначьте номера строк, чтобы я мог фильтровать для rn = 1, что является самым последним результатом.
ROW_NUMBER() OVER (PARTITION BY [UnitId] ORDER BY [Start Time] DESC, UnitID DESC) AS rn
Что я делаю не так?
Может предоставить больше кода, но большая часть выглядит как это:
CASE
WHEN SUBSTRING([ActivityDetail],cast((CHARINDEX('Laser A BkGnd Brightness',[ActivityDetail]) - 15) as int),1) = '1' THEN SUBSTRING([ActivityDetail],cast((CHARINDEX('Laser A BkGnd Brightness',[ActivityDetail]) - 15) as int),3)
ELSE SUBSTRING([ActivityDetail],cast((CHARINDEX('Laser A BkGnd Brightness',[ActivityDetail]) - 14) as int),2)
END as 'Laser A Background Brightness'