我有一个参数被传递给一个过程,该过程以varchar的形式接收一个int列表,如下所示:
@sSortFilter VARCHAR(512) = ''
我想在程序方面验证它,所以如果有人在执行过程时在int之前的开头放一个逗号,例如:
, 23, 24
而不是23, 24
它会防止这种情况发生,因此程序不会爆炸。
有没有办法使用SQL来防范这种情况?
答案 0 :(得分:0)
请看这里:https://msdn.microsoft.com/en-us/library/ms175976.aspx
示例:
BEGIN TRY
SELECT 1/0;
--This is where you would break your list down, if it fails here the catch will fire
END TRY
BEGIN CATCH
-- how you want to handle the error.
END CATCH;
答案 1 :(得分:0)
将Case statement
与某些string functions
一起使用,以检查您的输入是否具有前导comma
并覆盖它。试试这个。
DECLARE @sSortFilter VARCHAR(512) = ', 23, 24'
SELECT @sSortFilter = CASE
WHEN LEFT(Ltrim(@sSortFilter), 1) = ',' THEN Ltrim(Substring(@sSortFilter, 2, Len(@sSortFilter)))
ELSE @sSortFilter
END
SELECT @sSortFilter