-1

我有一个包含列的表

[id],[StartsWith],[Length] ,[MinExt] ,[MaxExt],[isDID] ,[DeleteDigits] ,[AppendDigits]

208 ,     61     ,    5    ,  61000  ,  61999 ,   0    ,       2       ,   22058

209 ,     63     ,    5    ,  63000  ,  63999 ,   0    ,       2       ,  26518

现在假设如果用户发送一个数字,比如 61205,我必须通过检查 MinExt 和 MaxExt 来检查该数字(即 61205)存在于哪一行

之后,我必须从数字开头的相应 deleteDigits 中提到的 61205 中截断 x 位(在这种情况下,将截断 2 位数字)在截断之后我必须在 [appenddigits] 列的最后附加 205。这将构成一个完整的数字,例如 22058205。

我必须通过 select 语句来做到这一点,因为这将是一个内部查询。或者如果有人可以提出其他建议,我将非常感激。

4

2 回答 2

1

尝试这个:

DECLARE @VAL NVARCHAR(100) = '61205'

SELECT AppendDigits + SUBSTRING(@VAL, 3, LEN(@VAL) - 2)
FROM   YOUR_TABLE
WHERE  CAST(@VAL AS int) BETWEEN MinExt AND MaxExt
于 2017-04-11T13:18:36.563 回答
0

如果您的问题中提到的查找表的行数很少,您可以使用多级案例语句来执行此操作。虽然它看起来很麻烦,但它可以完美地完成这项工作,而不依赖于其他代码。

如果此表可能有很多行,您可能需要使用 SQL Server 用户定义函数。

于 2017-04-11T13:09:54.380 回答