我正在尝试从充满价格的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 '[.] ';
我也尝试过%随机字符的不同变化,但此时我正在转动我的车轮。
我希望实现的是运行一个简单的命令,该命令取消此列的每个单元格中的所有前导和尾随空格,而不修改任何实际的列数据。
答案 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功能:
它使用修剪功能来删除这两种类型的空格。
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')))