【问题标题】:Select values that begin with a number选择以数字开头的值
【发布时间】:2011-05-29 13:22:07
【问题描述】:

在 MySQL 上,我有一个包含以数字开头的数据的列的表

如何选择仅以数字开头的行?

【问题讨论】:

标签: sql mysql select numbers


【解决方案1】:
SELECT * FROM YourTable WHERE YourColumn regexp '^[0-9]+'

【讨论】:

  • +1 for REGEXP(我不认为 LIKE 支持 RegEx(正如 @RedFilter 所暗示的那样)。不过,我自己可能会使用'^[0-9]+' 作为模式。
  • 我是否需要添加任何程序集或其他东西才能在 MS SQL 服务器中使用 REGEXP?
  • 嘿,你能发布上面查询的 sqlite 版本吗,因为 regexp 在某些 android 设备中不可用。提前致谢
  • 你也可以用 rlike 代替 like
  • 为什么不'^[0-9].+'
【解决方案2】:

你可以这样做:

SELECT *
FROM MyTable
WHERE MyColumn REGEXP '^[0-9]';

使用的正则表达式是^[0-9]

^    - Start anchor, used to ensure the pattern matches start of the string.
[    - Start of character class.
0-9  - Any digit
]    - End of character class

实际上,我们正在尝试选择列中以数字开头的那些值。

演示:

mysql> select * from tab;
+-------+
| col   |
+-------+
| 1foo  |
| foo   |
| 10foo |
| foo10 |
+-------+
4 rows in set (0.00 sec)

mysql> select * from tab where col regexp '^[0-9]';
+-------+
| col   |
+-------+
| 1foo  |
| 10foo |
+-------+
2 rows in set (0.00 sec)

【讨论】:

    【解决方案3】:

    还有

    SELECT * FROM YourTable
    WHERE YourColumn LIKE '[0-9]%';
    

    【讨论】:

    【解决方案4】:

    另一种方式:

    WHERE LEFT(columnName,1) IN ('0','1','2','3','4','5','6','7','8','9')
    

    并且使用常见的字符集和排序规则,这将起作用并在列上使用索引:

    WHERE columnName >= '0' AND columnName < ':'
    

    【讨论】:

      【解决方案5】:
      SELECT * FROM TABLE T
      WHERE T.COLUMNNAME REGEXP '^[0-9]';
      

      另一个答案是:

      SELECT * FROM TABLE T
      WHERE T.COLUMNNAME RLIKE '^[0-9]';
      

      【讨论】:

      • "RLIKE is a synonym for REGEXP"
      猜你喜欢
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-10
      • 1970-01-01
      • 2015-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多