Joh*_*ica 3 sql-server stored-procedures isnumeric
对这个简单的查询非常恼火...
我需要为varchar添加一个偏移量,如果它是一个数字而什么都不做,那就不是了.
出于这个原因,我在SQL-server中创建了以下函数.然后我提取答案:
select dbo.OffsetKPL("100",200)
但是这不起作用,我得到了错误
消息207,级别16,状态1,行1
无效的列名称"100".
该功能的代码如下......
ALTER FUNCTION [dbo].[OffsetKPL](
@kpl varchar(20)
,@offset int = 0
)
RETURNS varchar(20)
AS
BEGIN
DECLARE @uitkomst varchar(20);
set @uitkomst = @kpl;
if not(@offset = 0) begin
if (IsNumeric(@uitkomst) = 1) begin
set @uitkomst = cast((cast(@kpl as int) + @offset) as varchar);
end;
end;
RETURN @uitkomst;
END
Run Code Online (Sandbox Code Playgroud)
怎么了?没有任何地方声明IsNumeric不接受变量.
对字符串使用单引号!
select dbo.OffsetKPL('100',200)
Run Code Online (Sandbox Code Playgroud)
如果你有QUOTED_IDENTIFIER
(默认)双引号中的东西应该是对象名称.
isnumeric
可能不是你需要的东西,因为各种意想不到的东西都会回归1
.
SELECT ISNUMERIC('$'), ISNUMERIC('.'),
ISNUMERIC('12d5'), ISNUMERIC(','), ISNUMERIC('1e1')
Run Code Online (Sandbox Code Playgroud)
看IsNumeric()是否破碎?关于这一点的讨论只有一点.
归档时间: |
|
查看次数: |
1843 次 |
最近记录: |