trim和string_split在SQL Server中不起作用?

时间:2019-06-20 21:08:18

标签: sql sql-server string split sql-server-2012

我问是因为我需要知道为什么某些功能(split_string,trim)在SQL Server(使用SSMS)中不起作用。

如果我运行以下命令:

SELECT TRIM('   SQL Tutorial! ') AS TrimmedString;

它说

  

第195条消息,第15级,状态10,第60行
  'TRIM'不是公认的内置函数名称。

是的,我可以使用rtrimltrim,但我也需要string_split来完成其他任务。

那么,问题是我有什么版本?在“帮助/关于”中,它显示为v17.9.1。但是根据此页面,它很明显表明它受支持。

https://docs.microsoft.com/en-us/sql/t-sql/functions/string-split-transact-sql?view=sql-server-2017

那么,为什么不起作用呢?

2 个答案:

答案 0 :(得分:1)

TRIM是SQL Server 2017中引入的。STRING_SPLIT是SQL Server 2016中的。您是否已连接到SQL Server早期版本上的数据库?

答案 1 :(得分:0)

CREATE FUNCTION dbo.ERP_FN_TRIM
(@Stringa VARCHAR(MAX)
)
RETURNS VARCHAR(MAX)
AS
     BEGIN
         DECLARE @StringaPulita VARCHAR(MAX),
                 @FlagSpazio    BIT;
         SET @StringaPulita='';
         SET @Stringa=LTRIM(RTRIM(@Stringa));
         SET @FlagSpazio=0;
         WHILE @Stringa <> ''
         BEGIN
             IF @FlagSpazio = 0
                 SET @StringaPulita=@StringaPulita + LEFT(@Stringa, 1);
             IF SUBSTRING(@Stringa, 2, 2) = '  '
             BEGIN
                 SET @FlagSpazio=1;
             END;
                 ELSE
             BEGIN
                 SET @FlagSpazio=0;
             END;
             SET @Stringa=SUBSTRING(@Stringa, 2, LEN(@Stringa));
         END;
         RETURN ISNULL(@StringaPulita, '');
     END;