如何使用LTRIM / RTRIM搜索和替换前导/尾随空格?

时间:2013-05-08 02:39:41

标签: sql-server tsql sql-server-2012

我正在尝试从充满价格的NVARCHAR(MAX)列中清除前导和尾随空格(由于从具有奇数字符的多个操作系统导入数据而使用NVARCHAR)。

此时我有一个t-sql命令可以从静态价格中删除前导/尾随空格。但是,当谈到利用同样的命令去除所有价格时,我很难过。

这是我用来删除特定价格的静态脚本:

UPDATE *tablename* set *columnname* = LTRIM(RTRIM(2.50)) WHERE cost = '2.50 ';

这是我试图删除所有尾随空格的内容:

UPDATE *tablename* set *columnname* LIKE LTRIM(RTRIM('[.]')) WHERE cost LIKE '[.] ';

我也尝试过%随机字符的不同变化,但此时我正在转动我的车轮。

我希望实现的是运行一个简单的命令,该命令取消此列的每个单元格中的所有前导和尾随空格,而不修改任何实际的列数据。

6 个答案:

答案 0 :(得分:10)

要从左/右移除空格,请使用LTRIM / RTRIM。你有什么

UPDATE *tablename*
   SET *columnname* = LTRIM(RTRIM(*columnname*));

会对所有行都有效。要在不需要更新时最小化更新,更新代码将保持不变,但WHERE子句中的LIKE表达式将是

UPDATE [tablename]
   SET [columnname] = LTRIM(RTRIM([columnname]))
 WHERE 32 in (ASCII([columname]), ASCII(REVERSE([columname])));

注意:32是空格字符的ascii代码。

答案 1 :(得分:2)

要删除空格...请使用ltrim / rtrim      LTRIM(字符串)      RTRIM(字符串)      传递给函数的String参数可以是列名,变量,文字字符串或用户定义函数或标量查询的输出。

SELECT LTRIM(' spaces at start')
SELECT RTRIM(FirstName) FROM Customers

了解详情:http://rockingshani.blogspot.com/p/sq.html#ixzz33SrLQ4Wi

答案 2 :(得分:1)

LTrim功能 RTrim功能

  • LTrim功能,用于删除前导空格 RTrim 函数从字符串变量中删除尾随空格
  • 它使用修剪功能删除这两种类型的空格

                  select LTRIM(RTRIM(' SQL Server '))
    

    输出:

                             SQL Server
    

答案 3 :(得分:0)

SELECT RTRIM(' Author ') AS Name;

输出没有任何尾随空格。

名称 ------ '作者'

答案 4 :(得分:0)

我理解这个问题适用于sql server 2012,但如果SQL Server 2017或SQL Azure的情况相同,则可以直接使用Trim,如下所示:

UPDATE *tablename*
   SET *columnname* = trim(*columnname*);

答案 5 :(得分:-1)

用于删除前导空格的LTrim函数和用于从字符串变量中删除尾随空格的RTrim函数。 它使用Trim函数删除两种类型的空格,并在字符串空格之前和之后表示。

选择LTRIM(RTRIM(REVERSE(' NEXT LEVEL EMPLOYEE')))