69 votes

TRIM n'est pas un nom de fonction intégrée reconnu

Pour le code suivant :

DECLARE @ss varchar(60)
  SET @ss = 'admin'

  select TRIM(@ss)

J'ai une erreur :

'TRIM' n'est pas un nom de fonction intégrée reconnu

2 votes

C'est bien sur mon Serveur SQL 2017

12 votes

Peut-être qu'il est réglé sur un niveau de compatibilité antérieur. Utilisez ceci pour le découvrir : SÉLECTIONNER compatibility_level FROM sys.databases. Il doit être 140

1 votes

@Nick.McDermaid tu devrais poster ça comme une réponse.

85voto

Prakash Kalakoti Points 1224

TRIM est introduit dans SQL Server (à partir de 2017).

Dans les anciennes versions de SQL Server pour effectuer une suppression des espaces, vous devez utiliser LTRIM et RTRIM comme suit.

DECLARE @ss varchar(60)
  SET @ss = ' admin '

  select RTRIM(LTRIM(@ss))

Si vous n'aimez pas utiliser LTRIM, RTRIM partout, vous pouvez créer votre propre fonction personnalisée comme suit.

   CREATE FUNCTION dbo.TRIM(@string NVARCHAR(max))
    RETURNS NVARCHAR(max)
     BEGIN
      RETURN LTRIM(RTRIM(@string))
     END
    GO

0 votes

Mais ce n'est pas une ancienne version - il s'agit apparemment de SQL 2017. À moins qu'ils n'aient confondu l'outil client.

0 votes

Il semble que quelqu'un ait accidentellement tagué 2017 en lisant le premier commentaire d'un autre utilisateur. L'auteur original n'a jamais mentionné que c'était en 2017. Je suppose donc qu'il s'agit d'une version plus ancienne.

0 votes

Ah je vois. Je suppose que l'auteur du post ne reviendra jamais pour éclaircir les choses alors je vais voir si je peux éditer la question et la supprimer

19voto

Nick.McDermaid Points 4806

Peut-être qu'il est défini sur un niveau de compatibilité antérieur.

Utilisez ceci pour le découvrir:

SELECT compatibility_level FROM sys.databases

SQL Server 2017 est 140

S'il est inférieur, alors il ne reconnaîtra pas TRIM

Pour changer la compatibilité vers SQL Server 2017

ALTER DATABASE nom_de_la_base_de_données   
SET COMPATIBILITY_LEVEL = 140

Pour une liste des niveaux de compatibilité supportés pour chaque version de SQL Server, consultez ALTER DATABASE (Transact-SQL) Niveau de compatibilité.

D'après les commentaires ci-dessous, votre version installée de SQL Server est SQL 2016. Vous devez installer SQL Sever 2017 pour obtenir TRIM

0 votes

Vous voudrez peut-être ajouter le lien vers ALTER DATABASE (Transact-SQL) Niveau de compatibilité. Il contient une liste des niveaux de compatibilité pris en charge pour chaque version de SQL Server.

0 votes

Vous avez raison, cela serait utile. J'ai effectivement cherché cette réponse entière sur Google et j'espère que le demandeur pourra le faire lui-même ! N'hésitez pas à modifier !

0 votes

Définition des erreurs de niveau de compatibilité avec Msg 15048, Niveau 16, État 1, Ligne 4 Les valeurs valides du niveau de compatibilité de la base de données sont 100, 110, 120 ou 130.

6voto

SQL_M Points 1755

Vous pouvez utiliser ce code pour les anciennes versions :

SELECT RTRIM (LTRIM (' JKL ')) AS Trimmed

Ce qui donne 'JKL'

0 votes

Et c'est (et bien d'autres choses) que nous savons que SQL Server est vraiment nul! C'est la façon dont Microsoft fait les choses : pourquoi simplifier alors que nous pouvons tout compliquer!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X