【问题标题】:MySQL if first character is numberMySQL如果第一个字符是数字
【发布时间】:2013-01-29 18:25:34
【问题描述】:

我正在尝试编写一个 mysql 脚本来查看第一个字符是否是数字,这就是我到目前为止所做的

select CASE WHEN user_id REGEXP '[0-9]+' then 1 else 0 end as user_id  from table

它将我的所有数据返回为 1...colum 是一个 varchar,我将拥有这样的 user_id 1234USER-484 或 `ADMIN-464567' 是我想要做的可能吗?

【问题讨论】:

标签: mysql sql


【解决方案1】:

所以您想改为显示 user_id 吗?然后将您的正则表达式放在WHERE 子句中

select user_id from table
where
user_id REGEXP '^[0-9]+'

您还缺少^,意思是“在行首”

【讨论】:

    【解决方案2】:

    试试这个来检查起始字母/数字是否是数字:

    select CASE WHEN user_id
    REGEXP '^[0-9]+' 
    then 1 else 0 end as user_id
    from table;
    

    select CASE WHEN user_id
    REGEXP '^\d+' 
    then 1 else 0 end as user_id
    from table;
    

    我只是想知道您的查询安排。我觉得应该是这样的,

    select user_id
    from table
    where REGEXP '^\d+' ;
    

    但您的实际使用的是正确的regex。 :)

    * SQLFIDDEL DEMO

    【讨论】:

    • @user1269625 +1 这个问题,因为我之前没有像你使用regex function那样使用过。它似乎工作:) 给定正确的regex
    【解决方案3】:

    由于您在 [0-9] 之前缺少 ^,因此它匹配您字段中任何位置的数字。通过指定 ^[0-9] 意味着它应该以数字开头。所以尝试使用'^[0-9]'

    【讨论】:

      猜你喜欢
      • 2013-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-11
      • 1970-01-01
      • 2021-04-11
      • 2021-11-16
      • 2018-04-16
      相关资源
      最近更新 更多