如何在2017年之前的SQL Server中修剪字符串?

问题描述 投票:0回答:9

在 SQL Server 2017 中,您可以使用此语法,但在早期版本中不能使用:

SELECT Name = TRIM(Name) FROM dbo.Customer;
sql sql-server
9个回答
305
投票
SELECT LTRIM(RTRIM(Names)) AS Names FROM Customer

67
投票

要在右侧修剪,请使用:

SELECT RTRIM(Names) FROM Customer

要在左侧修剪,请使用:

SELECT LTRIM(Names) FROM Customer

要修剪两侧,请使用:

SELECT LTRIM(RTRIM(Names)) FROM Customer

8
投票

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

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

还要考虑禁止其他可能导致问题的字符(制表符、回车符、换行符等)。

这可能也是将这些名称拆分为

family_name
first_name
等的好时机:)


8
投票
SELECT LTRIM(RTRIM(Replace(Replace(Replace(name,'   ',' '),CHAR(13), ' '),char(10), ' ')))
from author

3
投票

“REPLACE”的扩展版本:

REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(RTRIM(LTRIM(REPLACE("Put in your Field name", ' ',' '))),'''',''), CHAR(9), ''), CHAR(10), ''), CHAR(13), ''), CHAR(160), '') [CorrValue]

1
投票

在带有 ssis 表达式的 sql server 2008 r2 中,我们有修剪功能。

SQL Server Integration Services (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".

0
投票

要从字符串的开头和结尾修剪任何字符集,可以执行以下代码,其中 @TrimPattern 定义要修剪的字符。在此示例中,空格、制表符、LF 和 CR 字符被修剪:

声明 @Test nvarchar(50) = Concat (' ', char(9), char(13), char(10), ' ', 'TEST', ' ', char(9), char(10), char (13),' ', '测试', ' ', char(9), ' ', char(9), char(13), ' ')

声明 @TrimPattern nvarchar(max) = '%[^ ' + char(9) + char(13) + char(10) +']%'

选择子字符串(@Test,PATINDEX(@TrimPattern,@Test),LEN(@Test) - PATINDEX(@TrimPattern,@Test) - PATINDEX(@TrimPattern,LTRIM(REVERSE(@Test)))+ 2)


0
投票

或者在旧版本中没有 TRIM() 的情况下,您可以使用 LTRIM(RTRIM(somestring)) 来达到所需的结果。


-1
投票

从客户中选择替换(名称,'','')

© www.soinside.com 2019 - 2024. All rights reserved.