如何检查sql中的数值?

时间:2014-02-17 11:19:08

标签: sql-server tsql

这是我的代码。我只想要数字字符。如果不是数字,则不应打印。

这里@msg是一个字符串的子字符串,它是动态创建的。所以我不能将@msg的类型更改为int。它可以是',, 3'或'4 ,,,等等。有时@msg包含逗号,所以我想检查numeric.Isnumeric()将逗号视为数字。我给出1作为结果。如何处理它?<​​/ p>

Declare @msg varchar(5)
    set @msg = ',5'
    if(isnumeric(@msg) = 1)
    begin
        print 'Numeric'
        -- logic
    end

2 个答案:

答案 0 :(得分:0)

IsNumeric肯定有特质。他们在社区中得到了很好的讨论。有关讨论,请参见此处simple talk

你真正需要做的是在问题和评论之间不是很清楚,但你可能会遇到一些简单的事情,比如检查以确保没有逗号:

DECLARE @msg VARCHAR(5)
SET @msg = ',5'
IF IsNumeric(@msg) = 1 AND CharIndex(',',@msg,1) = 0
BEGIN
    PRINT 'Numeric'
    -- logic
END

有关如何更好地使用IsNumeric的更多想法,请参阅efficient-isnumeric-replacements-on-sql-server等类似问题。

答案 1 :(得分:0)

我认为您只想验证您的变量是否仅包含数值。使用查询..

declare @ClientID varchar(100)
declare @filename varchar(1000)
set @filename = '3081PDShivamCSS_MDaily.Dat'
set @ClientID = substring('3081PDShivamCSS_MDaily.Dat', 1,4)

If @ClientID Not LIKE '%[^0-9]%'
Print Numeric