【问题标题】:SQL Convert character to numericSQL将字符转换为数字
【发布时间】:2019-11-12 16:31:37
【问题描述】:

我有一列设置为字符,但用户可以插入数字。

如何识别字段的数字长度为 11 而不是字母?

例子:

样本数据{col1= aaaaaaaaaaa,11111122222}

select Col1
from
table
group by 1
having SUM(CHARACTER_LENGTH(Col1))=11

错误输出:aaaaaaaaaa

所需输出:11111122222

简而言之,我需要检索 char 列中所有可以识别为数字并具有 11 位数字的值。

【问题讨论】:

标签: sql firebird


【解决方案1】:

使用similar tocharacter_length()

select * from tablename
where (col similar to '[0-9]+') and character_length(col) = 11

或:

select * from tablename
where col similar to '[0-9]{11}'

请参阅demo

【讨论】:

  • 你好,太棒了! tks.
  • 当我在 Firebird 的 RegEx 中使用“乘数”时,我认为速度有问题。以至于他们在 FB4 中考虑使用不同的 RegEx 库(Google RE2)
  • @Arioch'The 据我所知,这个问题与触发回溯的复杂模式有关,这在这里应该不是问题。顺便说一句:他们没有考虑使用不同的库,他们已经在 9 月份切换了。
  • @MarkRotteveel 在 FB4 正式发布之前我仍然认为它是“考虑”的,因为在发布既成事实之前,如果 RE2 表面出现任何意外困难,它总是可以切换回来。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多