Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何仅修剪右侧的所有空间和新线_Sql Server_Tsql - Fatal编程技术网

Sql server 如何仅修剪右侧的所有空间和新线

Sql server 如何仅修剪右侧的所有空间和新线,sql-server,tsql,Sql Server,Tsql,也许这很容易,但由于某种原因,我无法做到这一点 问题是,当我用CHAR(13)和CHAR(10)和RTRIM删除所有空格\新行时,它会从两个方向删除所有空格和新行 DECLARE @txt NVARCHAR(1000); SET @txt = ' Some Text '; 预期结果: @txt = ' Some Text'; 对于此类任务,最好实现SQL CLR函数,在SQL Server中引入正则表达式功能。例如: DECLARE @txt NVARCHAR(1000); SET @

也许这很容易,但由于某种原因,我无法做到这一点

问题是,当我用
CHAR(13)
CHAR(10)
RTRIM
删除所有空格\新行时,它会从两个方向删除所有空格和新行

DECLARE @txt NVARCHAR(1000);
SET @txt = '

Some Text

';
预期结果:

@txt = '

Some Text';

对于此类任务,最好实现SQL CLR函数,在SQL Server中引入正则表达式功能。例如:

DECLARE @txt NVARCHAR(1000);
SET @txt = '

Some Text


';

SELECT [dbo].[fn_Utils_RegexReplace] (@txt, '[\s\n]+$', '');
您可以找到有关如何创建此类函数的更多信息

对于较新版本的SQL Server(从SQL Server 2016开始),您可以选择使用
R
进行评论中提到的操作


无论如何,建议我阅读有关可以创建的SQL CLR对象(函数、触发器、类型、聚合)的内容,因为您可以使用.net解决各种任务。

可能的重复并不容易。SQL不是一种字符串操作语言。理想情况下,应该在将数据插入数据库之前执行数据清理。在SQL Server 2016之前,您必须使用非常复杂的查询或外部程序(如用C#编写的程序)来清理这样的文本。在SQL Server 2016中,您也可以使用R脚本。SQl Server 2017还增加了Python支持。您是否尝试过用谷歌搜索这个问题????网上有大量的参考资料,其中有大量非常复杂和/或缓慢的解决方案。OP要求替换字符串末尾的换行符。使用正则表达式很容易。使用SQL并不容易