2016-01-14 51 views
1

我有下面的查詢,我試圖通過所有使用標量值函數的對象,但是我得到一個字符串或二進制數據將被截斷錯誤。請協助。字符串或二進制數據將被截斷錯誤與模糊連接

Select 
    definition 
From 
    sys.sql_modules M 
Join 
    (Select 
     name 
    from 
     sys.objects O 
    where 
     type_desc = 'SQL_SCALAR_FUNCTION')T 
on 
    '%' + T.name + '%' Like '%' + M.definition +'%' 
+0

請標記使用DBMS。 (有些非ANSI SQL ......) – jarlh

+0

基於查詢中使用的元數據,它是sql server –

回答

0

某些返回的記錄的長度大於目標列的長度。增加目標列的長度。要進一步調試,請在SQL Server上運行以下查詢。這將爲您提供所需的目標列的最小長度,以避免此錯誤。

Select 
    max(len(definition)) 
From 
    sys.sql_modules M 
Join 
    (Select 
     name 
    from 
     sys.objects O 
    where 
     type_desc = 'SQL_SCALAR_FUNCTION')T 
on 
    '%' + T.name + '%' Like '%' + M.definition +'%' 

我的用戶的評論後發現,您的模式是超過8000個字符的限制,因爲定義柱爲varchar(max)和必須超過8000個字符長度。

'%' + T.name + '%' Like '%' + M.definition +'%' 

MSDN

模式 - 是一個字符的特定字符串在 MATCH_EXPRESSION搜索,並且可以包括下列有效通配符的字符 。模式可以是最多8,000字節。

您可能會感興趣的是什麼

SELECT definition 
FROM sys.sql_modules AS M 
JOIN 
(
SELECT name 
FROM sys.objects AS O 
WHERE type_desc = 'SQL_SCALAR_FUNCTION' 
) AS T 
ON M.definition LIKE '%'+T.name+'%' 
+0

沒有目標列。 – usr

相關問題