在“删除”尾随空格后选择distinct

时间:2013-10-04 19:43:09

标签: sql sql-server sql-server-2008

列ID(varchar)具有重复值。其中一些值具有尾随空格,当我进行选择时,我不希望看到这些空格。

我想在删除尾随空格后执行“select distinct”。

我尝试了下面的代码并没有帮助。我仍然在输出中得到尾随空格。

CREATE FUNCTION dbo.TRIM(@string VARCHAR(MAX))
RETURNS VARCHAR(MAX)
BEGIN
RETURN LTRIM(RTRIM(@string))
END
GO
SELECT dbo.TRIM(' String ')
GO

然后,

select distinct dbo.trim(MyID) as Trimmed
from dbo.SourceTbl

代码取自 - http://blog.sqlauthority.com/2013/01/23/sql-server-trim-function-to-remove-leading-and-trailing-spaces-of-string-sql-in-sixty-seconds-040-video/

3 个答案:

答案 0 :(得分:5)

尝试这样的事,也许?

SELECT DISTINCT trimmed
FROM (
    SELECT RTRIM(LTRIM(MyID)) as trimmed
    FROM dbo.SourceTbl
) A

答案 1 :(得分:0)

您是否尝试创建使用REPLACE(@string,'','')的函数? 这应该具有相同的效果(用空字符串替换空格)。

您也可以尝试在SELECT语句中使用RTRIM或REPLACE函数,而不是创建用户定义的函数。

答案 2 :(得分:-1)

SELECT Distinct  replace(Colum, ' ', '') AS Trimmed
FROM Table

DECLARE @String1 NVARCHAR(MAX)
SET @String1 = ' String '
SELECT @String1 OriginalString, RTRIM(LTRIM(@String1)) TrimmedValue
GO

创建一个删除前导和尾随空格的函数

CREATE FUNCTION dbo.TRIM(@string VARCHAR(MAX))
RETURNS VARCHAR(MAX)
BEGIN
RETURN LTRIM(RTRIM(@string))
END
GO


SELECT DISTINCT dbo.TRIM(' String ')
GO