select语句截断并追加列值

时间:2017-04-11 13:02:50

标签: sql sql-server-2012 inner-query

我有一个包含列的表

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

如果此表可能包含许多行,则可能需要使用SQL Server用户定义函数。