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

根据指定数字查询临时表中对应区间的DisplayName

问题解决:根据数字匹配区间返回对应DisplayName

原临时表结构及数据

CREATE TABLE #TempTable (
    DisplayName VARCHAR(50),
    Value1 VARCHAR(50),
    Value2 VARCHAR(50)
)

INSERT INTO #TempTable
VALUES
('569-580','569','580'),
('581-592','581','592'),
('593-607','593','607'),
('608-620','608','620')

SELECT * FROM #TempTable

需求说明

当提供一个数字时,判断该数字是否落在某条记录的Value1至Value2区间内(包含边界值),返回对应的DisplayName。例如:

  • 输入606,输出'593-607'
  • 输入608,输出'608-620'

解决方案

由于Value1和Value2是字符串类型,直接比较会出现逻辑错误(比如字符串'99'会被判定为大于'100'),必须先转换为数值类型再进行区间匹配。

基础查询(输入为数字类型)

-- 定义输入数字,替换为实际需要查询的值
DECLARE @InputNumber INT = 606

SELECT DisplayName
FROM #TempTable
WHERE CAST(Value1 AS INT) <= @InputNumber 
  AND CAST(Value2 AS INT) >= @InputNumber

处理输入为字符串的情况

-- 定义输入字符串,替换为实际需要查询的值
DECLARE @InputStr VARCHAR(50) = '608'

SELECT DisplayName
FROM #TempTable
WHERE CAST(Value1 AS INT) <= CAST(@InputStr AS INT) 
  AND CAST(Value2 AS INT) >= CAST(@InputStr AS INT)

兼容非数字数据的安全查询

如果Value1或Value2中存在非数字内容,使用TRY_CAST避免查询报错(转换失败时该条记录会被自动过滤):

DECLARE @InputNumber INT = 606

SELECT DisplayName
FROM #TempTable
WHERE TRY_CAST(Value1 AS INT) <= @InputNumber 
  AND TRY_CAST(Value2 AS INT) >= @InputNumber

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 14:43:09