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

时间:2013-10-29 15:48:50

标签: sql sql-server-2005

这个问题与SQL Server 2005有关。我有2个UDF,1个查找包含2列的国家/地区代码表; “code”,其中包含国家/地区的缩写,“name”包含国家/地区的名称。这两个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 PHILIPPINES 1000”,我需要的是“SAMPALOC MANILA PH 1000”。我需要在地址整体长度> 1的情况下这样做。 60.

我不知道为什么将它放在REPLACE语句中会导致失败。有没有其他人遇到这个或者知道为什么会发生这种情况?

1 个答案:

答案 0 :(得分:0)

在LTRIM和RTRIM函数中将我的返回变量包含在UDF中。问题解决了。