这个问题与 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”。如果整个地址的长度> 60,我需要这样做。
我不知道为什么把它放在 REPLACE 语句中会导致它失败。有没有其他人遇到过这种情况或知道为什么会这样?