我有这个问题:
CASE
WHEN ISNUMERIC(SUBSTRING(dbo.Post.OdaSayisi, 1, CHARINDEX('+', dbo.Post.OdaSayisi) - 1)) = 1
THEN SUBSTRING(dbo.Post.OdaSayisi, 1, CHARINDEX('+', dbo.Post.OdaSayisi) - 1)
ELSE 0
END AS RoomNumber,
Run Code Online (Sandbox Code Playgroud)
where OdaSayisi是一个像3 + 1,4 + 2的字符串.当我尝试编写此查询时:
SELECT *
FROM [myDB].[dbo].[MyView]
WHERE RoomNumber = 3
Run Code Online (Sandbox Code Playgroud)
我在标题中收到此错误.我怎样才能解决这个问题?谢谢.
问题是某些值OdaSayisi没有'+'.最简单的解决方案是将一个用于CHARINDEX()功能
(CASE WHEN ISNUMERIC(SUBSTRING(dbo.Post.OdaSayisi, 1, CHARINDEX('+', dbo.Post.OdaSayisi + '+') - 1)) = 1
THEN SUBSTRING(dbo.Post.OdaSayisi, 1, CHARINDEX('+', dbo.Post.OdaSayisi + '+') - 1)
ELSE 0
END) AS RoomNumber,
Run Code Online (Sandbox Code Playgroud)
在+ '+'确保CHARINDEX()不会返回一个负数.
| 归档时间: |
|
| 查看次数: |
3212 次 |
| 最近记录: |