Как определить функцию SQL, которая сворачивает табличное значение в скаляр - PullRequest
0 голосов
/ 05 июня 2018

- Как определить функцию f ниже в SQL или T-SQL?

CREATE TABLE tableNames (tName varchar(100))

INSERT INTO tableNames VALUES ('someTableName')

SELECT * FROM f(tableNames)

Где я хочу определить f следующим образом:

f :: { {tName :: varchar(100)} } -> varchar(100)

f(tableNames) = 

if tableNames has no records, then return 'defaultTableName'

else if tableNames has more than one record, return 'duplicatesTableName'

else return the value of the tName attribute of the single tuple in tableNames.

Ответы [ 3 ]

0 голосов
/ 05 июня 2018

Узнайте, как создавать функции в SQL Server здесь .Из того, что я понимаю в вашей ситуации, я бы использовал следующее:

CREATE FUNCTION f (@tName varchar(100))
RETURNS varchar(100)
AS
RETURN
(
    SELECT (CASE WHEN COUNT(*) = 0 THEN 'defaultTableName'
                 WHEN COUNT(*) > 1 THEN 'duplicateTableName'
                 ELSE MAX(tName)
            END) AS return_value
    FROM tableNames
)
0 голосов
/ 05 июня 2018

Вы, кажется, хотите:

select (case when count(*) = 0 then 'defaultTableName'
             when count(*) > 1 then 'duplicatesTableName'
             else max(tName)
        end) as return_value
from tableNames;

Это легко включить в функцию, хотя я не вижу необходимости в этом.Вы можете так же легко сделать это.

0 голосов
/ 05 июня 2018

Попробуйте создать функцию на сервере sql:

CREATE FUNCTION dbo.StripWWWandCom (@input VARCHAR(250))
RETURNS VARCHAR(250)
AS BEGIN
DECLARE @Work VARCHAR(250)

SET @Work = @Input

SET @Work = REPLACE(@Work, 'www.', '')
SET @Work = REPLACE(@Work, '.com', '')

RETURN @work
END

. Это может помочь вам обратиться по ссылке ниже

https://www.c -sharpcorner.com / UploadFile /37db1d / Создание-и-управления-определяемые пользователем-функции-в-SQL-сервер-2008 /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...