【问题标题】:count number of characters in nvarchar column计算 nvarchar 列中的字符数
【发布时间】:2013-01-10 10:04:50
【问题描述】:

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

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

【问题讨论】:

  • TEXT 已弃用,不应使用。
  • "但这仅适用于文本"怎么办?归根结底,nvarchar 列中的所有内容都必须由 unicode 字符序列组成,存储为 UTF-16,并且您的方法会计算这些字符的数量。

标签: sql sql-server-2008 datalength


【解决方案1】:

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

SELECT LEN(Column) FROM TABLE

【讨论】:

  • 'LEN' 只会给你计数直到 4000。那么,如何获得长度大于 4000 的字符数?
  • 我没听明白...我猜它计算的字符串值超过 4000 长度。请确认。
  • 嗨@TechDo,我有一个HTML内容,使用你的解决方案我试图获得超过4000个字符的内容长度,但不知道为什么它只返回4000个字符!所以,我说..!对此有什么想法吗?
  • 是的!我同意!但通过 SQLserver 允许我不超过 4000 个字符!我们需要在 Management Studio 中进行任何设置吗?
【解决方案2】:

使用

SELECT length(yourfield) FROM table;

【讨论】:

  • 在 DataBricks 中,length 工作 len 不起作用
【解决方案3】:

使用LEN函数:

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

【讨论】:

    【解决方案4】:

    SELECT LEN(column_name) 不工作吗?

    【讨论】:

      【解决方案5】:

      文本不适用于 len 函数。

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

      Source

      【讨论】:

        【解决方案6】:

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

            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。

        【讨论】:

          猜你喜欢
          • 2016-09-20
          • 1970-01-01
          • 1970-01-01
          • 2019-03-19
          • 1970-01-01
          • 2021-02-23
          • 2020-12-24
          • 2018-04-20
          相关资源
          最近更新 更多