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
我有一个 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