Telstra Ответов: 1

Как создать a.net эквивалентная функция в SQL server


Привет,

Я хочу создать эквивалентную функцию .net в sql server. .Чистая функция выглядит следующим образом
private string getEligibility(int? elig, string overridden)
        {
            string ret = elig == 0 ? "Red" : elig == 1 ? "Green" : elig == 2 ? "Yellow" : elig == 3 ? "Purple" : elig == 4 ? "P" : elig == 5 ? "NA" : elig == 6 ? "PB" : elig == 7 ? "EX" : elig == 8 ? "PA" : elig.ToString();
            if (!string.IsNullOrEmpty(overridden) && overridden == "Y")
            {
                ret += "^";
            }
            return ret;
        }


То же самое, что и выше, мне нужно создать в sql server.
Я пробовал, как показано ниже, но только получал право на участие. Мне также нужно проверить его переопределенное значение, а затем вернуть конечное значение. Жирная часть кода .net, которую я не могу написать на sql server.

Что я уже пробовал:

создайте функцию [dbo].[udfgetEligibility]
(
@eligibilty as int
)
Возвращает varchar (100)

как
начать
возврат случае
Когда @eligibilty = 0, то "красный"
Когда @eligibilty = 1, то "зеленый"
Когда @eligibilty = 2, то "желтый"
Когда @eligibilty = 3, то "фиолетовый"
Когда @eligibilty = 4, то 'P'
Когда @eligibilty = 5, то "NA"
Когда @eligibilty = 6, то 'PB'
Когда @eligibilty = 7, то "EX"
Когда @eligibilty = 8, то "PA"
-- прием...
ELSE CONVERT(varchar(10), @eligibilty)
конец
конец

1 Ответов

Рейтинг:
0

OriginalGriff

Я бы поставил стол, чтобы сделать это, а не использовать кейс:

ID	Description
0	RED       
1	GREEN     
2	YELLOW
...

Тогда это довольно тривиально:
SELECT ISNULL((SELECT Description FROM Mappings WHERE ID = @eligibilty), @eligibilty)


Telstra

Привет,
Спасибо за ответ. Как написано внутри .Чистый код сначала принимает значение приемлемости, а затем также проверяет его переопределенное значение. Наконец, возвращая строковое значение. По-моему или по-вашему, он берет 0,1,2 ... и так далее, а затем возвращает его в цвете. Как только я получу цвет,нужно проверить его переопределенное значение, а затем должно быть возвращено конечное значение.

OriginalGriff

Так что переверните его! Таблица работает в обоих направлениях, поэтому поменяйте местами критерии SELECT и WHERE.