web-dev-qa-db-fra.com

compte le nombre de caractères dans la colonne nvarchar

Est-ce que quelqu'un connaît un bon moyen de compter les caractères dans une colonne de texte (nvarchar) dans Sql Server? Les valeurs peuvent être du texte, des symboles et/ou des chiffres.

Jusqu'ici, j'ai utilisé sum(datalength(column))/2 mais cela ne fonctionne que pour le texte. (c'est une méthode basée sur la longueur de données et cela peut varier d'un type à l'autre).

34
Sam

Vous pouvez trouver le nombre de caractères en utilisant la fonction système LEN. c'est à dire.

SELECT LEN(Column) FROM TABLE
65
TechDo

Utilisation

SELECT length(yourfield) FROM table;
6
Marc

Utilisez la fonction LEN :

Renvoie le nombre de caractères de l'expression de chaîne spécifiée, à l'exclusion des blancs de fin.

6
Oded

SELECT LEN(column_name) ne fonctionne-t-il pas?

4
brykneval

le texte ne fonctionne pas avec la fonction len.

les types de données ntext, text et image seront supprimés dans une future version de Microsoft SQL Server. Évitez d'utiliser ces types de données dans les nouveaux travaux de développement et prévoyez de modifier les applications qui les utilisent actuellement. Utilisez plutôt nvarchar (max), varchar (max) et varbinary (max). Pour plus d'informations, voir Utilisation de types de données de grande valeur.

Source

1
mr_eclair

J'ai eu un problème similaire récemment, et voici ce que j'ai fait:

    SELECT
         columnname as 'Original_Value',
         LEN(LTRIM(columnname)) as 'Orig_Val_Char_Count',
         N'['+columnname+']' as 'UnicodeStr_Value',
         LEN(N'['+columnname+']')-2 as 'True_Char_Count'
    FROM mytable 

Les deux premières colonnes examinent la valeur d'origine et comptent les caractères (moins les espaces de début et de fin).

J'avais besoin de comparer cela avec le nombre réel de caractères, c'est pourquoi j'ai utilisé la deuxième fonction LEN. Il définit la valeur de la colonne sur une chaîne, force cette chaîne à Unicode, puis compte les caractères.

En utilisant les crochets, vous vous assurez que tous les espaces de début et de fin sont également comptés comme des caractères; Bien sûr, vous ne voulez pas compter les crochets eux-mêmes, donc vous soustrayez 2 à la fin.

0
ORSJess