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

如何生成正确SQL查询?解决ID匹配返回0的问题

7/8位整数ID的MAX查询解决方案

你之前的查询返回0是因为两个核心问题:

  1. FORMAT(Id, '0#######') 会给7位ID补前导零,比如7位的2500859会被转为02500859,前两位是02而非25,无法匹配筛选条件;
  2. LIKE '25' 仅匹配刚好两位字符的字符串,而FORMAT后生成的是8位字符串,永远不会满足这个条件。

下面提供几种高效的正确查询方式:

方式一:字符串匹配(通用多数数据库)

将ID转为字符串后,匹配前两位为25的7/8位数值:

SELECT MAX(Id) 
FROM YourTable 
WHERE CAST(Id AS VARCHAR(8)) LIKE '25%'

如果需要严格限定ID是7或8位,可以追加长度判断:

SELECT MAX(Id) 
FROM YourTable 
WHERE CAST(Id AS VARCHAR(8)) LIKE '25%'
  AND LEN(CAST(Id AS VARCHAR(8))) IN (7, 8)

方式二:数值范围判断(性能更优)

利用ID是整数的特性,直接通过数值范围筛选以25开头的7/8位ID:

SELECT MAX(Id) 
FROM YourTable 
WHERE (Id BETWEEN 2500000 AND 2599999)  -- 匹配7位的25xxxxxx
   OR (Id BETWEEN 25000000 AND 25999999) -- 匹配8位的25xxxxxx

方式三:整数除法判断(简洁高效)

通过整数除法提取前两位,适用于支持整数除法的数据库(如SQL Server、MySQL等):

-- SQL Server 写法
SELECT MAX(Id) 
FROM YourTable 
WHERE Id / 1000000 = 25

-- MySQL 写法
SELECT MAX(Id) 
FROM YourTable 
WHERE Id DIV 1000000 = 25

原理:7位的25xxxxxx除以1000000得到整数25,8位的25xxxxxx除以1000000同样得到整数25,刚好覆盖两种情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 13:15:32