【问题标题】:Calculating the length of each record in the table [duplicate]计算表中每条记录的长度[重复]
【发布时间】:2012-01-25 01:09:44
【问题描述】:

可能重复:
how to find rowsize in table

如何计算表中每条记录的长度(Sql Server 2008)

【问题讨论】:

  • record 是什么意思?整排?包括内部开销?另请提供您的表格定义。如果它不包括潜在的非行列,则有一种简单的方法。
  • 我的意思是记录为元组或行
  • 创建表#TEMP(RollID INT,名称 NVARCHAR(100),类 NVARCHAR(100))
  • 啊实际上我想的方式行不通。我认为这可能是 %%rowdump%% 的用途,但看起来这实际上并没有给出整行。
  • 嗨马丁..我想找到可变行大小..因为这可以帮助我跟踪该行中的更新更改..或查找该行是否被修改

标签: sql sql-server-2008 tsql


【解决方案1】:

尝试LEN() 而不是DATALENGTH()

SELECT LEN(yourcolumnName) AS LengthOfEntry From yourtablename

这为您提供该列中每个条目的长度

只需为每一列将它们串在一起以获得整个表格的条目

例子:

SELECT LEN(yourcolumnName) as Column1, LEN(yourcolumnname2) AS Column2 From yourtablename

您可以使用SUM() 来获取该列中每个字符的总和

SELECT SUM(LEN(yourcolumnName)) as Column1, SUM(LEN(yourcolumnname2)) AS Column2 From yourtablename

【讨论】:

  • 他正在寻找总行大小;这仅适用于单列。
  • DATALENGTH 不会给你确切的长度......对于 INT,长度始终为 2,尽管值发生了变化......我想用这个长度来检测一行中的变化
  • 这是真的,我会留下答案,因为我对此感到好奇。当做 varchars 除以 2 给你该行的确切长度。我现在不能试验 Ints,这种类型的解决方案还会在哪里引起问题?
  • 我猜对象类型 varchar , nvarchar 的变化很明显
  • @user824910 也许 LEN() 是你要找的
【解决方案2】:

因为这可以帮助我跟踪该行中的更新更改.. 或 查看该行是否被修改

我认为您正在寻找触发器。这将帮助您确定在任何记录中所做的更改..

Triggers Reference

【讨论】:

    猜你喜欢
    • 2015-05-09
    • 2022-10-04
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 1970-01-01
    • 2014-04-08
    相关资源
    最近更新 更多