• sqlserver判断字符串是否是纯数字


    有的时候我们可能会需要去判断数据库中一个字符串类型的字段是否是存的纯数字,通常来说解决思路是先去找数据库引擎提供的内置函数是否有能够满足需求的,没有再另觅他法。

    在sqlserver引擎中,自sqlserver2005起提供了一个isnumeric(expression)函数用于判断字符串是否为纯数字:当expression为数字时,返回1,否则返回0。

    但是实际使用上却会存在偏差:

    select isnumeric('123.456') as '123.456' -- 1
         , isnumeric('-')       as '-'       -- 1
         , isnumeric('+')       as '+'       -- 1
         , isnumeric('$')       as '$'       -- 1
         , isnumeric('.')       as '.'       -- 1
         , isnumeric(',')       as ','       -- 1
         , isnumeric('\')       as '\'       -- 1
         , isnumeric('1D1')     AS '1D1'     -- 1
         , isnumeric('1E1')     AS '1E1'     -- 1
         , isnumeric('1d1')     AS '1d1'     -- 1
         , isnumeric('1e1')     AS '1e1'     -- 1
         , isnumeric('d')       AS 'd'       -- 0
         , isnumeric('e')       AS 'e' -- 0

    具体是,当字符串中含有美元符、加减号、逗号等符号时,或者在D、E的前后均出现数字时,也会返回1,而微软这样设计的原因成谜。

    因此我们只能另觅他法,推荐使用patindex( '%pattern%', expression)检索函数配合正则表达式做判断:

    select patindex('%[^0-9|.|-]%', '-1232.456'); -- 0
    select patindex('%[^0-9|.|-]%', 'yanggb666'); -- 1

    这样,当判断的结果为0的时候,字符串就是纯数字,可以用强制类型转换为数字类型;当判断结果不为0的时候,就能知道字符串不是纯数字了。

    "那一天我二十一岁,在我一生的黄金时代,我有好多奢望:我想爱,想吃,还想在一瞬间变成天上半明半暗的云。后来我才知道,生活就是个缓慢受锤的过程:人一天天老下去,奢望也一天天消失。"

    你要去做一个大人,不要回头,不要难过。
  • 相关阅读:
    二分查找
    django 中间件
    logging 模块
    linux ssh keys
    spark(一) build
    hadoop中遇到的问题。
    算法----字符串拷贝
    phpmailer 实现发送邮件
    thinkphp操作数据库
    thinkphp 使用过程中遇到的一个小函数
  • 原文地址:https://www.cnblogs.com/yanggb/p/15753761.html
Copyright © 2020-2023  润新知