sql - 处理传递给 LEFT 或 SUBSTRING 函数错误的无效长度参数
问题描述
我有一个相当简单的查询,它使用该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'
解决方案
试试这个:
Select
ST.Description
, CASE PATINDEX('% ([0-9]% x %) -%', ST.Description)
WHEN 0 THEN ST.Description
ELSE SUBSTRING(ST.Description, PATINDEX('% ([0-9]% x %) -%', ST.Description) + 2, CHARINDEX('x', SUBSTRING(ST.Description, PATINDEX('% ([0-9]% x %) -%', ST.Description) + 2, 20))-2)
END
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'
SELECT PATINDEX('% ([0-9]% x %) -%', '1 x -')
推荐阅读
- python - /pembayaran/ ModelForm 处的 ValueError 未指定模型类。姜戈
- function - Kotlin 列表中的 groupby 和 foreach
- python - 按下按钮时 gif 不播放 PyQt5
- c - 使用逻辑运算符返回值
- c# - 为什么在我映射模型时自动映射器会出错?
- java - 使用 log4j2 在 Spring Boot 中自定义日志级别
- angular - Angular 8 - 材料自动完成 - mat-form-field
- javascript - 尝试在 localhost:3000 上的后端和 localhost:8080 上的前端之间建立 socket.io 连接时出现 CORS 错误
- python-3.x - 如何使用 cv2 python 生成视频
- javascript - 如何使用 jquery 将多个文本复制到剪贴板