SQL REPLACE语句未返回子查询的预期结果
此问题与SQL Server 2005有关。我有2个UDF,1个用于查找包含2列的国家代码表;包含国家缩写的“代码”和包含国家名称的“名称”。这两个UDF都会被传递一个地址,并根据被拆分字符串的UDF拆分的字符串进行查找 例如:SQL REPLACE语句未返回子查询的预期结果,sql,sql-server-2005,Sql,Sql Server 2005,此问题与SQL Server 2005有关。我有2个UDF,1个用于查找包含2列的国家代码表;包含国家缩写的“代码”和包含国家名称的“名称”。这两个UDF都会被传递一个地址,并根据被拆分字符串的UDF拆分的字符串进行查找 例如: SELECT dbo.GetCountryName('SAMPALOC MANILA PHILIPPINES 1000') 返回“菲律宾”和 返回“PH” 它们工作得很好,但当我在REPLACE语句中使用它们时: SELECT REPLACE(('SAMPALOC M
SELECT dbo.GetCountryName('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马尼拉菲律宾1000”,我需要的是“SAMPALOC马尼拉PH 1000”。如果地址作为一个整体的长度大于60,我需要这样做
我不知道为什么把它放在REPLACE语句中会导致它失败。是否有其他人遇到过这种情况或知道发生这种情况的原因?将我的返回变量封装在LTRIM和RTRIM函数的UDF中。问题已解决。确保
GetCountryName
UDF未返回带尾随空格的值?可能是char
数据类型而不是varchar
?是的,@Martin是正确的。如果函数返回您提到的值,那么replace函数将按要求工作。是的,这正是它的工作原理。UDF返回了尾随空格。更换功能现在工作正常。谢谢
SELECT REPLACE(('SAMPALOC MANILA PHILIPPINES 1000'),
(SELECT dbo.GetCountryName('SAMPALOC MANILA PHILIPPINES 1000')),
(SELECT dbo.GetCountryCode('SAMPALOC MANILA PHILIPPINES 1000')))