gpt4 book ai didi

sql-server - IsNumeric 在 SQL Server 中不起作用

转载 作者:行者123 更新时间:2023-12-04 01:23:43 24 4
gpt4 key购买 nike

对这个简单的查询感到非常恼火...
我需要向 varchar 添加一个偏移量,如果它是一个数字并且什么都不做,它不是。
为此,我在 SQL-server 中创建了以下函数。然后我提取答案:选择 dbo.OffsetKPL("100",200)

但是这不起作用,我得到了错误

Msg 207, Level 16, State 1, Line 1
Invalid column name '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

怎么了?它没有任何地方声明 IsNumeric 不接受变量。

最佳答案

对字符串使用单引号!

select dbo.OffsetKPL('100',200)

如果您在(默认)上有 QUOTED_IDENTIFIER,双引号中的内容应该是对象名称。

isnumeric 可能不是您所需要的,因为各种意想不到的事情都会为此返回 1

SELECT ISNUMERIC('$'), ISNUMERIC('.'), 
ISNUMERIC('12d5'), ISNUMERIC(','), ISNUMERIC('1e1')

参见 IsNumeric() Broken? Only up to a point关于这一点的一些讨论。

关于sql-server - IsNumeric 在 SQL Server 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5419377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com