【发布时间】:2024-01-06 21:13:01
【问题描述】:
我有一个相当简单的查询,它使用Substring 函数从描述中提取信息。但是有些描述格式异常,导致报错
传递给 LEFT 或 SUBSTRING 函数的长度参数无效。
如果 Substring 函数失败,我想返回整个描述。然而,在线搜索解决方案并没有让我有所收获。 TRY...CATCH 构造似乎很有用,但我不知道在这种情况下如何使用它。
Select
ST.Description
, SUBSTRING(ST.Description, PATINDEX('% ([0-9]% x %) -%', ST.Description) + 2, CHARINDEX('x', SUBSTRING(ST.Description, PATINDEX('% ([0-9]% x %) -%', ST.Description) + 2, 20))-2) AS SubTaskQTY
From astTaskSubTasks ST
Join astTasks T ON T.Id = ST.ParentId
Join astAssets A ON A.Id = T.AssetId
Where A.Code = '2016100011'
【问题讨论】:
-
嗨,蒂姆,您可以使用“case when”表达式来避免异常,而不是捕获错误。这里是官方文档的链接:docs.microsoft.com/de-de/sql/t-sql/language-elements/…
标签: sql sql-server tsql substring