这个问题是关于SQL Server 2005的。我有 2 个 UDF,其中 1 个用于查找包含 2 列的国家/地区代码表;"代码"包含一个国家的缩写,"名称"包含国家的名称。这两个 UDF 都会传递一个地址,并根据被拆分字符串的 UDF 分解的字符串进行查找。
例如:
SELECT dbo.GetCountryName('SAMPALOC MANILA PHILIPPINES 1000')
返回"菲律宾"和
SELECT dbo.GetCountryCode('SAMPALOC MANILA PHILIPPINES 1000')
返回"PH"。
这些工作正常,但是当我在 REPLACE 语句中使用它们时:
SELECT REPLACE(('SAMPALOC MANILA PHILIPPINES 1000'),
(SELECT dbo.GetCountryName('SAMPALOC MANILA PHILIPPINES 1000')),
(SELECT dbo.GetCountryCode('SAMPALOC MANILA PHILIPPINES 1000')))
我得到"SAMPALOC MANILA PHILIPPENES 1000",我需要的是"SAMPALOC MANILA PH 1000"。如果整个地址的长度> 60,我需要这样做。
我不知道为什么将其放在 REPLACE 语句中会导致此操作失败。有没有人遇到过这种情况或知道为什么会发生这种情况?
我的返回变量封装在 LTRIM 和 RTRIM 函数的 UDF 中。问题解决了。