首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sql regexp字符串以".0“结尾

问sql regexp字符串以".0“结尾
EN

Stack Overflow用户
提问于 2019-11-27 21:22:42
回答 2查看 153关注 0票数 2

我想判断一个正数字符串是否以".0“结尾,所以我写了下面的sql:select '12310' REGEXP '^[0-9]*\.0$'。然而,结果是true。我想知道为什么我会得到这个结果,因为我之前用了"\“。为了逃脱。所以我写了另一个select '1231.0' REGEXP '^[0-9]\d*\.0$',但这次的结果是false。有人能告诉我正确的模式吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-27 21:53:30

点(.)在regexp中有特殊的含义(任何字符),如果您想要字面上的点,则需要转义:

代码语言:javascript
复制
 select '12310' REGEXP '^[0-9]*\\.0$';

结果:

代码语言:javascript
复制
false

使用双斜杠转义配置单元中的特殊字符。斜杠有特殊的含义,用于\073 (分号)、\n (换行符)、\t (制表符)等字符。这就是为什么要转义时需要使用双斜杠。对于字符类数字,也使用\\d

代码语言:javascript
复制
hive> select '12310.0' REGEXP '^\\d*?\\.0$';
OK
true

此外,方括号内的字符不需要双斜杠转义:可以使用[.]代替\\.

票数 4
EN

Stack Overflow用户

发布于 2019-11-27 21:26:10

如果你知道它是一个数字字符串,为什么不直接使用:

代码语言:javascript
复制
select ( val like '%.0' )

如果你想验证字符串是否在其他地方都有数字,你需要正则表达式。但是,如果只需要检查最后两个字符,like就足够了。

至于你的问题,.是正则表达式中的通配符。它可以匹配任何字符。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59071214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档