【问题标题】:How to display numbers which are like 11111 or similar in MS sql如何在 MS sql 中显示类似于 11111 或类似的数字
【发布时间】:2015-04-21 10:52:56
【问题描述】:

我正在尝试显示 ID 列中应该具有相同数字的数字。

如 11111 或 2222 或 33333

select * from table where id like '1111' - 这会给我 1 个值,但有很多值,例如 1111111111 或 111111,我不确定,因为有超过 10 万条记录。

【问题讨论】:

  • 11112345这样的数字呢,也应该考虑它们,否则id中必须全是1's
  • no 该值应与第一个数字相同。如 111111 或 222222 或 3333333 或 44444 等。

标签: mysql sql regex database


【解决方案1】:

使用正则表达式

SELECT * from table where id REGEXP '^(1+|2+|3+|4+|5+|6+|7+|8+|9+)$';

【讨论】:

    【解决方案2】:

    您可以使用正则表达式来做到这一点,例如:

    where id regex '^((1+)|(2+)|(3+)|(4+)|(5+)|(6+)|(7+)|(8+)|(9+)|(0+))$'
    

    testing 上,这需要一组额外的括号(刚刚添加)。

    【讨论】:

      【解决方案3】:

      如果数字必须与第一个数字匹配,您可以捕获第一个数字,然后使用反向引用:

      ^([0-9])\1+$
      

      如果您安装了导入 PCRE 库的LIB_MYSQLUDF_PREG(根据Regular-expressions.info),这将起作用。语法为PREG_RLIKE('/^([0-9])\\1+$/i', col)

      【讨论】:

      • 你确定支持反向引用吗?
      • 这取决于是否安装了 LIB_MYSQLUDF_PREG。我将更新免责声明。
      【解决方案4】:

      使用 % 通配符

      如果您想包含 2341111、1111342 或 23111154 等数字

      SELECT *
      FROM table
      WHERE id LIKE '%1111%'
      

      如果您只想要具有相同数值的数字 1111 或 1111111 或 11111111 等

      SELECT *
      FROM table
      WHERE id LIKE '1%11%1'
      

      【讨论】:

      • @Sandeep 非常正确,取决于他的要求,我会针对多个场景进行编辑
      • 第二个查询不起作用。它将包括 121121、122221122221 等值。
      猜你喜欢
      • 2010-12-20
      • 2018-09-23
      • 2017-04-17
      • 2014-10-03
      • 2019-06-09
      • 1970-01-01
      • 2014-12-07
      • 1970-01-01
      • 2021-09-01
      相关资源
      最近更新 更多