我有一个使用SUBSTRING来获取列值的CTE。 该子串构建了一些组合函数(REVERSE,CHARINDEX)以获得正确的位置和长度。使用此CTE的查询将该列放在GROUP BY中。
这很好用。但如果CTE中根本没有结果,那就不行了。
然后,我收到了这个错误:
Invalid length parameter passed to the LEFT or SUBSTRING function.
我在stackoverflow上看到了很多这样的消息,但不是这种情况。有谁知道这个问题,我该怎么办呢?
为了说明我的问题,一些没有REVERSE函数的简化代码:
;WITH #mycte AS(
SELECT p.[CreatedDate] AS CreatedDate,
SUBSTRING(p.[value],
CHARINDEX('starttag', p.[value])+16,
(CHARINDEX('endtag', p.[value] - CHARINDEX('starttag', p.[value])
) AS Remark
SELECT COUNT(*), CreatedDate, Remark FROM #mycte GROUP BY Remark
答案 0 :(得分:2)
我认为你需要改变:
p.[value]
要:
ISNULL(p.[Value],0)