如何在2017年之前修剪SQL Server中的字符串?
在SQL Server 2017中,您可以使用此语法,但不能在早期版本中使用:如何在2017年之前修剪SQL Server中的字符串?,sql,sql-server,trim,Sql,Sql Server,Trim,在SQL Server 2017中,您可以使用此语法,但不能在早期版本中使用: SELECT Name = TRIM(Name) FROM dbo.Customer; 要在右侧进行修剪,请使用: SELECT RTRIM(Names) FROM Customer 要在左侧进行修剪,请使用: SELECT LTRIM(Names) FROM Customer 要在两侧进行修剪,请使用: SELECT LTRIM(RTRIM(Names)) FROM Customer 我假设这是一次一次性的
SELECT Name = TRIM(Name) FROM dbo.Customer;
要在右侧进行修剪,请使用:
SELECT RTRIM(Names) FROM Customer
要在左侧进行修剪,请使用:
SELECT LTRIM(Names) FROM Customer
要在两侧进行修剪,请使用:
SELECT LTRIM(RTRIM(Names)) FROM Customer
我假设这是一次一次性的数据清理练习。完成后,确保添加数据库约束以防止将来出现错误数据,例如
ALTER TABLE Customer ADD
CONSTRAINT customer_names__whitespace
CHECK (
Names NOT LIKE ' %'
AND Names NOT LIKE '% '
AND Names NOT LIKE '% %'
);
还考虑禁用其他字符(选项卡、回车、换行等),这可能会导致问题。
现在也可以将这些名称拆分为
姓氏
,名
,等等:)在使用ssis表达式的sql server 2008 r2中,我们具有修剪功能
SQL Server集成服务(SSIS)是Microsoft SQL Server数据库软件的一个组件,可用于执行广泛的数据迁移任务
您可以在此链接上找到完整的说明
但该函数本身有一些限制,msdn在该页中也提到了这些限制。
但这是在sql server 2008 r2中
TRIM(" New York ") .The return result is "New York".
“替换”的扩展版本:
要从字符串的开头和结尾修剪任何字符集,可以执行以下代码@TrimPattern定义要修剪的字符。在此示例中,将修剪空格、制表符、左前和右后字符: 声明@Test nvarchar(50)=Concat(“”,char(9),char(13),char(10),“”,Test’,“”,char(9),char(10),char(13),“”,Test’,“”,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)顺便问一下,微软有什么可能的理由在没有修剪的情况下包含LTRIM和RTRIM函数?这很奇怪,因为它是多余的。您可以使用LTRIM(RTRIM(var))完成同样的事情。你可以说它们都是冗余的,因为TSQL有CHARINDEX和SUBSTRING,但这是一种愚蠢的看待它的方式。它一点都不冗余。不提供一个称为TRIM的函数会给用户带来语法负担。这可能是一个疏忽,或者是因为每个功能都从-100点开始而被取消的功能之一(这实际上只会导致不一致的功能集,而不是优先功能集,IMHO)。这是最简单的方法,只需记住将您的列别名为returned@Miles-为了完整性,我添加了别名。我知道这是使用修剪值的正确方法。但是,你能解释一下为什么在我们可以使用TRIM的情况下同时使用LTRIM和RTRIM吗?@CodeBuster:SQL Server没有定义TRIM函数,即使在2014版本中也是如此。SQL Server现在在2017版本中有TRIM。这与MS SQL无关,只是它位于与数据库捆绑的产品中。
TRIM(" New York ") .The return result is "New York".
SELECT LTRIM(RTRIM(Replace(Replace(Replace(name,' ',' '),CHAR(13), ' '),char(10), ' ')))
from author
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(RTRIM(LTRIM(REPLACE("Put in your Field name", ' ',' '))),'''',''), CHAR(9), ''), CHAR(10), ''), CHAR(13), ''), CHAR(160), '') [CorrValue]