Оператор select для усечения и добавления значений столбцов

У меня есть таблица, которая содержит столбцы

[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, я должен проверить, в какой строке этот номер (т.е. 61205) существует, проверив между MinExt и MaxExt.

после этого мне нужно усечь x цифр из 61205, упомянутых в соответствующих deleteDigits от начала числа (в этом случае будут усечены 2 цифры), после усечения я должен добавить 205 в последнем столбце [appenddigits]. который сделает полный номер, как 22058205.

Я должен сделать это с помощью оператора select, поскольку это будет внутренний запрос. или если кто-то может предложить что-то еще, я буду очень благодарен.

2 ответа

Попробуй это:

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

Если в таблице поиска, упомянутой в вашем вопросе, есть несколько строк, вы можете использовать для этого многоуровневую инструкцию Case. Хотя это выглядело бы обременительно, оно отлично справлялось бы с работой вне зависимости от другого кода.

Если в этой таблице может быть много строк, вы можете использовать пользовательскую функцию SQL Server.

Другие вопросы по тегам