SQL REPLACE 语句不返回带有子查询的预期结果



这个问题是关于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 中。问题解决了。

最新更新