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

SQLite中用LIKE/REGEXP匹配string_id特殊内容的SQL查询问题

解决方案:基于LIKE的SQLite查询语句

我来帮你搞定这个匹配逻辑!先结合你的例子把规则理清楚:

  • 输入1时,要匹配三类行:
    1. string_id完全等于1的行(第1行);
    2. string_id以1/开头的行(第2行);
    3. string_id包含-1的行(第4行);
  • 输入2时,要匹配两类行:
    1. string_id以2/开头的行(第3、4行);
    2. string_id包含-2的行(第2行);

基于这个逻辑,用SQLite默认支持的LIKE操作符就能实现,不需要额外启用REGEXP(当然也可以用REGEXP,但LIKE更通用)。完善后的SQL语句如下(用参数占位符避免SQL注入):

SELECT * FROM data_table
WHERE string_id = ? 
   OR string_id LIKE ? || '/%' 
   OR string_id LIKE '%-' || ? || '%';

验证你的例子:

  • 当用户输入1时,语句等价于:
    SELECT * FROM data_table
    WHERE string_id = '1' 
       OR string_id LIKE '1/%' 
       OR string_id LIKE '%-1%';
    
    结果正好匹配第1、2、4行,排除第3行,完全符合需求。
  • 当用户输入2时,语句等价于:
    SELECT * FROM data_table
    WHERE string_id = '2' 
       OR string_id LIKE '2/%' 
       OR string_id LIKE '%-2%';
    
    结果正好匹配第2、3、4行,排除第1行,也符合你的要求。

补充说明:

  • 用?作为参数占位符是最佳实践,避免直接拼接用户输入导致的SQL注入风险;
  • 如果你的SQLite环境支持REGEXP,也可以用正则实现,写法如下(兼容性稍差):
    SELECT * FROM data_table
    WHERE string_id REGEXP '^' || ? || '$|^' || ? || '/|-' || ?;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:50:50