创建包含 REPLACE 函数的 SQL Server 函数



我正在尝试创建从表中获取数据,替换某些字符并返回替换数据的函数。函数将在调用时执行。

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语句后,应该替换的字符不会被替换,但整行变为 null。

如评论中所述,使用 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

我建议定义适当长度的函数参数

所以

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

而是

CREATE FUNCTION convert_lat(@rawtxt nvarchar(255))

最新更新