使用 LEFT 函数进行条件检查

Condition check with LEFT function

我有以下示例数据:

create table num_test
(
    numb int,
    names varchar(20)
);

insert into num_test values(123456,'ABC');
insert into num_test values(12345,'DCD');
insert into num_test values(1234567,'ECD');
insert into num_test values(123456789,'BCD');

我有输入值:

declare @num int = 123456

我想搜索 left 6 或 5 个整数。如果与 left 6 匹配,则应忽略 left 5,否则应显示 left 5

所以预期的结果应该是:

numb    names
-----------------
123456  ABC

查询:

declare @num int = 123456

SELECT * FROM num_test 
where numb = LEFT(@num,6) or numb = LEFT(@num,5)

您可以按 numb 的长度对结果进行排序,并取前一个:

SELECT   TOP 1 * 
FROM     num_test 
WHERE    numb IN (LEFT(@num,6), LEFT(@num,5))
ORDER BY LEN(numb) DESC