2014-02-17 49 views
-1

這是我的代碼。我只想要數字字符。如果它不是數字,則不應該打印。如何檢查sql中的數值?

這裏@msg是其中一個字符串的子字符串,它是動態創建的。因此我不能將@msg的類型更改爲int.It可以是',, 3'或'4 ,,,等等。 msg包含逗號,所以我想檢查numeric.Isnumeric()將逗號看作numeric.I給出1作爲結果。如何處理它?

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

您正在使用哪種RDBMS? – Incognito

+0

你可以刪除'',沒有後果嗎?沒有',4,5,6,7'作爲輸入? – rene

+0

我正在使用sql server 2005 –

回答

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

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