Пытаясь запустить этот запрос, я написал, чтобы вернуть список файлов в курсе, но столкнулся с этой ошибкой, когда преобразование не удалось при преобразовании значения varchar '_1 'к типу данных int.Ошибка преобразования при преобразовании значения varchar '_1' в тип данных int
SELECT cm.course_id, cc.title title, cc.dtmodified dtmodified, MIN(xf.FILE_SIZE) file_size, MIN(crl.resource_id) resource_id, MIN(xu.FULL_PATH) full_path
FROM BBLEARN.dbo.cms_resource_link crl
INNER JOIN BBLEARN.dbo.course_contents cc ON cc.pk1 = crl.parent_pk1
INNER JOIN BBLEARN.dbo.course_main cm ON cm.pk1 = crl.crsmain_pk1
INNER JOIN BBLEARN.dbo.course_users cu ON cm.pk1 = cu.crsmain_pk1
INNER JOIN BBLEARN.dbo.users u ON cu.users_pk1 = u.pk1
INNER JOIN BBLEARN_CMS_DOC.dbo.XYF_FILES xf ON crl.resource_id = xf.ENTRY_ID + '_1'
INNER JOIN BBLEARN_CMS_DOC.dbo.XYF_URLS xu ON xu.FILE_ID = xf.FILE_ID
INNER JOIN BBLEARN_CMS_DOC.dbo.XYF_FILES xf2 ON xu.PARENT_ID = xf2.FILE_ID
WHERE crl.parent_data_type='content'
AND cu.role='P'
AND crl.storage_type='PUBLIC'
AND xf.FILE_TYPE_CODE='F'
AND (LOWER(xu.FILE_NAME) LIKE N'%.mov%' or LOWER(xu.FILE_NAME) LIKE N'%.avi%' or LOWER(xu.FILE_NAME) LIKE N'%.wm%' or LOWER(xu.FILE_NAME) LIKE N'%.mp%' or LOWER(xu.FILE_NAME) LIKE N'%.rm%' or LOWER(xu.FILE_NAME) LIKE N'%.flv%' or LOWER(xu.FILE_NAME) LIKE N'%.amr%' or LOWER(xu.FILE_NAME) LIKE N'%.aif%' or LOWER(xu.FILE_NAME) LIKE N'%.aup%' or LOWER(xu.FILE_NAME) LIKE N'%.m4%' or LOWER(xu.FILE_NAME) LIKE N'%.wav%' or LOWER(xu.FILE_NAME) LIKE N'%.swf%')
AND xu.FULL_PATH NOT LIKE '/internal/%'
AND NOT EXISTS (
SELECT 1 FROM BBLEARN.dbo.cms_resource_link
WHERE crsmain_pk1 = crl.crsmain_pk1
AND parent_pk1 = crl.parent_pk1
AND parent_data_type='content'
AND resource_id = xf2.ENTRY_ID + '_1')
GROUP BY cm.course_id, cc.pk1, cc.title, cc.dtmodified ORDER BY 1;
Это показывает в строке 7 и 21, я считаю, где есть конкатенация xf.ENTRY_ID + '_1'
и xf2.ENTRY_ID + '_1'
[Пожалуйста, пожалуйста, пожалуйста, укажите длину VARCHAR] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits- к ножным объявляющего-VARCHAR-без-length.aspx). –
@AaronBertrand Я бы не знал правильную длину для этого случая, поэтому я его пропустил. –
@AaronBertrand Я даже не знаю наверняка, если это 'TIMYINT',' SMALLINT', 'INT' или' BIGINT' ... Итак, что было бы лучше всего для этого случая? –