SQL Server 2014中的TRIM函数

7
在SQLite中,我写了以下代码:
UPDATE MYTABLE SET MYFIELD = TRIM(MYFIELD);

如何在SQL Server 2014上实现此功能?

2
可能是重复的问题:在SELECT语句(MS SQL)中如何修剪字符串? - dllhell
7
你为什么不花10秒钟去谷歌一下呢? - juergen d
@juergend,我不喜欢评论一个五年前的评论,但是由于找不到像原帖一样的答案,我感到有必要。有时即使答案似乎很容易获得,寻找它并找到它都取决于你搜索什么。例如,我在谷歌上搜索“sql server 2014 trim function”,首先看到了这个问题。看着谷歌上的其他结果,我的头脑无法理解 SQL 2014 中没有 TRIM,而 LTRIM 和 RTRIM 存在的事实。每次我注意到一个页面谈论 (L|R)TRIM,我就会迅速忽略它。 - Arvo Bowen
4个回答

10
UPDATE MYTABLE SET MYFIELD = LTRIM(RTRIM(MYFIELD));

然而,字段类型必须是 varchar() 而不是 text。否则会出现“rtrim 函数的参数数据类型 text 对于参数 1 无效”的错误提示。

5
您需要使用函数LTRIM(从左侧剪切)和RTRIM(从右侧剪切):
UPDATE MYTABLE SET MYFIELD = LTRIM(RTRIM(MYFIELD));

我在哪里可以找到这个函数,也就是说我该如何编写它? - user3927897
你不需要编写函数,LTRIMRTRIM是内置函数。使用dotnetom的查询即可。它会起作用的。@user3927897 - Sarath Subramanian
我得到了:rtrim函数的第一个参数数据类型text无效。 - user3927897

1
你应该使用 LTRIM 和 RTRIM 函数来处理文本,像这样: UPDATE MYTABLE SET MYFIELD = LTRIM(RTRIM(MYFIELD AS VARCHAR(SIZE)))

0

如果我们还想处理空格/不需要的制表符:

请检查并尝试以下脚本(单元测试通过)-

--Declaring
DECLARE @Tbl TABLE(col_1 VARCHAR(100));

--Test Samples
INSERT INTO @Tbl (col_1)
VALUES
('  EY     y            
Salem')
, ('  EY     P    ort       Chennai   ')
, ('  EY     Old           Park   ')
, ('  EY   ')
, ('  EY   ')
,(''),(null),('d                           
    f');

SELECT col_1 AS INPUT,
    LTRIM(RTRIM(
    REPLACE(
    REPLACE(
    REPLACE(
    REPLACE(
    REPLACE(
        REPLACE(
        REPLACE(
        REPLACE(
        REPLACE(
        REPLACE(
        REPLACE(col_1,CHAR(10),' ')
        ,CHAR(11),' ')
        ,CHAR(12),' ')
        ,CHAR(13),' ')
        ,CHAR(14),' ')
        ,CHAR(160),' ')
        ,CHAR(13)+CHAR(10),' ')
    ,CHAR(9),' ')
    ,' ',CHAR(17)+CHAR(18))
    ,CHAR(18)+CHAR(17),'')
    ,CHAR(17)+CHAR(18),' ')
    )) AS [OUTPUT]
FROM @Tbl;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接