栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在varchar列中查找非数字值

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在varchar列中查找非数字值

精度意味着您最多需要

allowed_precision
数字中的数字(严格来说,不计算前导零,但我会忽略这一点)。刻度表示最多
allowed_scale
可以在小数点后。

这建议使用正则表达式,例如:

[-]?[0-9]{1,<before>}[.]?[0-9]{0,<after>}

您可以构造正则表达式:

NOT REGEXP_LIKE(COLUMN_NAME,     REPLACE(REPLACE('[-]?[0-9]{1,<before>}[.]?[0-9]{0,<after>}', '<before>', allowed_precision - allowed_scale         ), '<after>', allowed_scale)

现在,变量正则表达式的效率非常低。您也可以使用

like
和其他功能来执行逻辑。我认为条件是:

(column_name not like '%.%.%' and column_name not like '_%-%' and translate(column_name, '0123456789-.x', 'x') is null and length(translate(column_name, '-.x', 'x') <= allowed_precision and length(translate(column_name, '-.x', 'x') >= 1 and instr(translate(column_name, '-.x', 'x'), '.') <= allowed_precision - allowed_scale)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/441663.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号