对这个简单的查询感到非常恼火......
我需要向 varchar 添加一个偏移量,如果它是一个数字并且什么都不做,它不是。
为此,我在 SQL-server 中创建了以下函数。
然后我提取答案:select dbo.OffsetKPL("100",200)
但是这不起作用,我收到错误
该函数的代码如下...
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
怎么了?没有任何地方说明 IsNumeric 不接受变量。
最佳答案
字符串使用单引号!
select dbo.OffsetKPL('100',200)
如果你有
QUOTED_IDENTIFIER
on(默认)双引号中的东西应该是对象名称。isnumeric
可能不是您所需要的,因为各种意想不到的事情都会为此返回 1
。SELECT ISNUMERIC('$'), ISNUMERIC('.'),
ISNUMERIC('12d5'), ISNUMERIC(','), ISNUMERIC('1e1')
有关这一点的一些讨论,请参见 IsNumeric() Broken? Only up to a point。
关于sql-server - IsNumeric 在 SQL 服务器中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5419377/