如何在SQL Server中修剪字符串?


Answers:


239
SELECT LTRIM(RTRIM(Names)) AS Names FROM Customer

3
这是做的最简单的方法,只记得别名返回你的专栏
万里

1
@Miles-为完整性起见,我添加了别名。
本·霍夫斯坦

2
我了解这是使用值修整的正确方法。但是您能解释一下当我们只使用TRIM时为什么同时使用LTRIM和RTRIM吗?
Code Buster

6
@CodeBuster:即使在2014版中,SQL Server也没有定义TRIM函数。
alextansc


64

要在右侧修剪,请使用:

SELECT RTRIM(Names) FROM Customer

要在左侧修剪,请使用:

SELECT LTRIM(Names) FROM Customer

要在两侧修剪,请使用:

SELECT LTRIM(RTRIM(Names)) FROM Customer

5
顺便说一句,Microsoft可能有什么可能的原因在没有TRIM的情况下包括LTRIM和RTRIM功能?这很奇怪。
本·霍夫斯坦

因为它是多余的。您可以使用LTRIM(RTRIM(var))完成相同的操作。
Kibbee

52
是的,但这是两个函数调用。您可以说它们都是多余的,因为TSQL具有CHARINDEX和SUBSTRING,但这是一种愚蠢的观察方式。
本·霍夫斯坦

9
这根本不是多余的。不提供一个称为TRIM的功能会给用户带来语法负担。
joelc

3
这可能是疏忽大意,或者是其中一些功能被取消,因为每个功能都始于-100点(这实际上只是导致功能不连贯的功能集,而不是优先的功能集IMHO)。
siride 2015年

7

我认为这是一次性的数据清理工作。完成后,确保添加数据库约束以防止将来出现不良数据,例如

ALTER TABLE Customer ADD
   CONSTRAINT customer_names__whitespace
      CHECK (
             Names NOT LIKE ' %'
             AND Names NOT LIKE '% '
             AND Names NOT LIKE '%  %'
            );

还应考虑禁止使用其他可能引起问题的字符(制表符,回车符,换行符等)。

这也可能是那些名字分成好时机family_namefirst_name等:)


4
SELECT LTRIM(RTRIM(Replace(Replace(Replace(name,'   ',' '),CHAR(13), ' '),char(10), ' ')))
from author

0

在带有sis表达式的sql server 2008 r2中,我们具有trim函数。

SQL Server集成服务(SSIS)是Microsoft SQL Server数据库软件的组件,可用于执行各种数据迁移任务。

您可以在此链接上找到完整的描述

http://msdn.microsoft.com/en-us/library/ms139947.aspx

但是此功能本身有一些限制,msdn在该页面上也提到了此功能。但这是在 SQL Server 2008 R2中

TRIM("   New York   ") .The return result is "New York".

3
除了与数据库捆绑在一起的产品外,这与MS SQL没有任何关系。
siride 2015年

-1

“ REPLACE”的扩展版本:

REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(RTRIM(LTRIM(REPLACE("Put in your Field name", ' ',' '))),'''',''), CHAR(9), ''), CHAR(10), ''), CHAR(13), ''), CHAR(160), '') [CorrValue]
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.