计算nvarchar列中的字符数

时间:2013-01-10 10:04:50

标签: sql sql-server-2008 datalength

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

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

6 个答案:

答案 0 :(得分:63)

您可以使用系统函数LEN找到字符数。 即。

SELECT LEN(Column) FROM TABLE

答案 1 :(得分:6)

使用LEN功能:

  

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

答案 2 :(得分:6)

使用

SELECT length(yourfield) FROM table;

答案 3 :(得分:4)

SELECT LEN(column_name)不起作用吗?

答案 4 :(得分:1)

文本不适用于len函数。

  

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

Source

答案 5 :(得分: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。