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

字符串列去除前导零的高效SQL LIKE查询需求问询

问题说明

数据表结构

Id  Number (string)

1   0000231
2   00232
3   231
4   24
5   A1233

查询需求

以可变值23作为查询条件,检索出忽略前导零后以23开头的记录,预期结果如下:

Id  Number

1   0000231
2   00232
3   231

当前问题

原EF Core查询代码仅能匹配第3条记录:

Where(c => EF.Functions.Like(c.AIN, $"{filter}%"))

原因是Number列是字符串类型,前导零会干扰匹配,需要在查询时忽略前导零。


高效SQL查询语句

方案1:去除前导零后匹配

SELECT Id, Number
FROM 你的表名
WHERE LTRIM(Number, '0') LIKE '23%'

注:不同数据库的语法略有差异:

  • SQL Server 直接使用LTRIM(Number, '0')
  • MySQL 8.0+ 支持LTRIM(Number, '0'),低版本可替换为TRIM(LEADING '0' FROM Number)

方案2:兼容全零记录(可选)

如果需要保留全零(如0000)的记录,可调整为:

SELECT Id, Number
FROM 你的表名
WHERE (LTRIM(Number, '0') LIKE '23%' OR Number = '0')

不需要的话直接用方案1即可。


补充:EF Core实现方案

最终采用的EF Core代码如下,通过TrimStart('0')去除前导零后再进行LIKE匹配:

.Where(c => EF.Functions.Like(c.AIN.TrimStart('0'), $"{filter}%"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 05:25:01