42

有谁知道在 Sql Server 的文本(nvarchar)列中计算字符的好方法?那里的值可以是文本、符号和/或数字。

到目前为止,我使用过sum(datalength(column))/2,但这仅适用于文本。(这是一种基于数据长度的方法,这可能因类型而异)。

4

6 回答 6

79

您可以使用系统函数查找字符数LEN。IE

SELECT LEN(Column) FROM TABLE
于 2013-01-10T10:06:41.110 回答
12

利用

SELECT length(yourfield) FROM table;
于 2015-09-01T10:04:07.400 回答
7

使用LEN功能:

返回指定字符串表达式的字符数,不包括尾随空格。

于 2013-01-10T10:07:11.910 回答
5

SELECT LEN(column_name)工作?

于 2013-01-10T10:06:51.420 回答
1

text 不适用于 len 函数。

在 Microsoft SQL Server 的未来版本中,将删除 ntext、text 和 image 数据类型。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。请改用 nvarchar(max)、varchar(max) 和 varbinary(max)。有关详细信息,请参阅使用大值数据类型。

资源

于 2013-01-10T10:11:11.247 回答
0

我最近遇到了类似的问题,这就是我所做的:

    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 

前两列查看原始值并计算字符数(减去前导/尾随空格)。

我需要将其与真实的字符数进行比较,这就是我使用第二个 LEN 函数的原因。它将列值设置为字符串,将该字符串强制为 Unicode,然后对字符进行计数。

通过使用方括号,您可以确保任何前导或尾随空格也算作字符;当然,您不想自己计算括号,所以最后减去 2。

于 2013-10-24T20:13:46.247 回答