我在存储过程中用到一个变量
declare @var as varchar(10)
变量有可能存储的是字符串
set @var='aaaa'
也有可能存储的是整型的
set @var='3333'
我要判断这个变量中存的是否为整数还是字符串
如果是整数要
set @var=@var/1000
如果不是整数则退出过程问题是怎么判断变量中存储的是整数而不是字符串?
谢谢大家

解决方案 »

  1.   


    declare @var as varchar(10)
    set @var='aaaa'
    Select IsNumeric(@var)
    set @var='3333'
    Select IsNumeric(@var)
      

  2.   

    declare @var as varchar(10)
    set @var='aaaa'
    Select IsNumeric(@var)
    set @var='3333'
    Select IsNumeric(@var)
    /*
    0
    1
    */
      

  3.   

    ISNUMERIC
    決定運算式是否為有效的數值型別。語法
    ISNUMERIC ( expression )引數
    expression是要驗算的運算式。傳回型別
    int備註
    當輸入運算式驗算為有效整數、浮點數字、money 或 decimal 型別時,ISNUMERIC 會傳回 1,否則會傳回 0。傳回值為 1 確保 expression 可被轉換成這些數值型別之一。
      

  4.   

    declare @var as varchar(10)
    set @var='aaaa'
    Select IsNumeric(@var)
    set @var='33d33'
    Select IsNumeric(@var)select  patindex('%[^0-9]%',@var)if patindex('%[^0-9]%',@var)>0
    print '含有字符'
    else
    print '数字'
      

  5.   

    LS的patindex('%[^0-9]%',@var) 定义一个模式```不包含数字的模式```LS正解```
      

  6.   

    如果是set @var='123.45' 呢?patindex不行吧?
      

  7.   


    declare @var as varchar(10)
    set @var='aaaa'
    --set @var='3333'
    if isnumeric(@var)=1 --加个判断!
    set @var=cast(@var as float)/1000.0
    SELECT @VAR