Оператор 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.