select 截断和追加列值的语句

select statement to truncate and append column values

我有一个 table 其中包含列

[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 语句执行此操作,因为它将是一个内部查询。或者如果有人可以提出其他建议,我将非常感激。

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

如果此 table 可能有很多行,您可能需要使用 SQL 服务器用户定义的函数。

试试这个:

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