Создание функции SQL Server с функцией ЗАМЕНА в - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь создать функцию, которая берет данные из таблицы, заменяет определенные символы и возвращает замененные данные. Функция будет выполнена при вызове.

CREATE FUNCTION convert_lat(@rawtxt NVARCHAR)
RETURNS NVARCHAR(50)
AS
BEGIN
    DECLARE @raw_mon NVARCHAR(50);

    SELECT @raw_mon = REPLACE (r.mongol, N'ф', 'f')
    FROM Connection.dbo.raw r
    WHERE r.mongol = @rawtxt

    RETURN @raw_mon;
END;
GO

UPDATE [Connection].[dbo].[raw] 
SET [mongol] = dbo.convert_lat(mongol) 
WHERE [mongol] LIKE N'ф%';

После выполнения оператора UPDATE символы, которые должны быть заменены, не заменяются, но вся строка становится пустой.

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Как сказано в комментариях, используйте функцию ITVF

CREATE FUNCTION convert_lat(@rawtxt nvarchar (400))
RETURNS TABLE AS RETURN
SELECT raw_mon = REPLACE (@rawtxt, N'ф', 'f')

GO

Используйте это:

SELECT R.* , F.raw_mon
FROM Connection.dbo.raw r
CROSS APPLY convert_lat (R.mongol) F
0 голосов
/ 09 мая 2018

Я бы рекомендовал определить функцию параметры с соответствующей длиной

Итак,

CREATE FUNCTION convert_lat(@rawtxt nvarchar) -- Will accept 1 length default

Было бы вместо

CREATE FUNCTION convert_lat(@rawtxt nvarchar(255))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...