You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL如何筛选Cansas市中以字母开头且数字结尾的数据?

解决Cansas市特定key格式的酒店房间数据筛选问题

我来帮你搞定这个SQL筛选的问题!你之前的SQL无效是因为**LIKE操作符不支持标准正则表达式语法**——它只能识别%(匹配任意长度字符)和_(匹配单个字符)这两种通配符,没法解析^、$、[]这类正则标记。

正确的SQL写法(以MySQL为例)

我们需要用REGEXP(或RLIKE,两者等价)来实现正则匹配,同时精准筛选城市为Cansas的数据:

SELECT * FROM hotelroom 
WHERE city = 'Cansas' 
AND `key` REGEXP '^[A-Za-z].*[0-9]$';

代码细节解释

  • city = 'Cansas':比LIKE '%Cansas%'更精准,能避免误匹配像“Cansasville”这类包含Cansas的其他城市名称
  • REGEXP '^[A-Za-z].*[0-9]$':
    • ^:锁定字符串的开头位置
    • [A-Za-z]:匹配任意大小写英文字母,确保key以字母开头
    • .*:匹配任意数量的任意字符,允许key中间包含字母、数字、符号等内容
    • [0-9]:匹配任意数字,确保key以数字结尾
    • $:锁定字符串的结尾位置

其他数据库的适配写法

如果你的数据库不是MySQL,也可以对应调整:

  • PostgreSQL:使用~操作符替代REGEXP
    SELECT * FROM hotelroom 
    WHERE city = 'Cansas' 
    AND "key" ~ '^[A-Za-z].*[0-9]$';
    
  • SQL Server:使用PATINDEX函数实现类似逻辑
    SELECT * FROM hotelroom 
    WHERE city = 'Cansas' 
    AND PATINDEX('%[0-9]$', [key]) > 0 
    AND PATINDEX('^[A-Za-z]%', [key]) > 0;
    

执行上述MySQL版本的SQL后,就能得到你期望的结果:

pID |name | city | key

542 |Z. Francis |Cansas | Z10-30
642 |Q. Snake |Cansas | Z10-25

内容的提问来源于stack exchange,提问作者Mashiba Sakuto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:39:43