isnumeric之“D”字符,环境05

simonxt 2012-11-12 03:25:49
select isnumeric('21'), isnumeric('2D1'), isnumeric('2d'), isnumeric('d1'), isnumeric('d')
结果会等于多少呢?
1 1 0 0 0

似乎isnumeric自动把d字符当做是数字对应的后面多少位0来对待,所以'2D1'是数字字符串,
所以类似的判定就得先replace一下'd'字符串才行。
不知道我说的对不对,还请各位路过的瞧瞧。
...全文
159 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gogodiy 2012-11-13
  • 打赏
  • 举报
回复
学习了,这个以前还真没注意过
坚_持 2012-11-13
  • 打赏
  • 举报
回复
ISNUMERIC(具体的数值) 函数判断所给定的表达式是否为合理的数值 如果是合理的数值 返回1 否则返回 0
kate_1988 2012-11-13
  • 打赏
  • 举报
回复
这种用法真的很难发现。佩服楼主!
Mr_Nice 2012-11-12
  • 打赏
  • 举报
回复
引用 楼主 simonxt 的回复:
select isnumeric('21'), isnumeric('2D1'), isnumeric('2d'), isnumeric('d1'), isnumeric('d') 结果会等于多少呢? 1 1 0 0 0 似乎isnumeric自动把d字符当做是数字对应的后面多少位0来对待,所以'2D1'是数字字符串, 所以类似的判定就得先replace一下'……
这个不是一个错误,只是有趣的一个误解。如果LZ需要筛选数字,就需要使用NOT LIKE '%[^0-9]%'来确定了, 虽然这样的效率会比较低一些。
Mr_Nice 2012-11-12
  • 打赏
  • 举报
回复
联机丛书上写的该函数式为了, 确定一个表达式是否是一个有效的数字类型 数字类型是很关键的一个词,而且容易引起歧义。 lz试试看下面的代码
SELECT [Ascii Code]        = STR(Number),
        [Ascii Character]   = CHAR(Number),
        [ISNUMERIC Returns] = ISNUMERIC(CHAR(Number))
   FROM Master.dbo.spt_Values
  WHERE Type = 'P'
    AND Number BETWEEN 0 AND 255
    AND ISNUMERIC(CHAR(Number)) = 1
居然都是1 。 LZ 使用的是字母d , 试试看 e 也是同样的效果,因为在这里d和e代表的不是字符,而是数字符号。 同样,这个函数也就认定为一个数字类型
快溜 2012-11-12
  • 打赏
  • 举报
回复
嗯,你说的对。
發糞塗牆 2012-11-12
  • 打赏
  • 举报
回复
还有这种说法啊?

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧