【问题标题】:Selecting actual length of field data rather field size选择字段数据的实际长度而不是字段大小
【发布时间】:2014-09-15 05:08:22
【问题描述】:

我有一个场景,我有一个表,其中有两列。

Create Table Temp
(
  _id INT,
  Name VARCHAR(2000)
)

INSERT INTO Temp VALUES (1,'')
INSERT INTO Temp VALUES (2,'Mike Terri')

SELECT * FROM Temp

当我在VBC# 中使用Ado.NET 选择时,它会将“名称”列的长度返回为2000,我只想获取包含的实际字符串的大小,这是我要做的事情是使用 Trim 功能,但在Select * 场景下是不可能的

【问题讨论】:

  • 从 Temp 中选择 LEN(Name)
  • @Rishabh :问题是我在此列返回的大小上设置 TextBox 大小,如果此列有值,它总是返回 2000 列的长度,但我希望它返回实际字符​​串和修剪列中剩余的空白区域
  • 然后Select max(ltrim(rtrim(len(name)))) from temp
  • 但在 Vb.Net 中,C# 它告诉 Length = 2000 的 DataSet 的对象,我希望将其限制为一列在选择中的最大字符数
  • @DareDevil 这似乎不是最佳做法。请问您为什么希望DataSet 反映有关数据而不是架构的信息?

标签: sql sql-server trim dml


【解决方案1】:

您可以将DATALENGTH 函数用作:

SELECT _id,
       Name,
       DATALENGTH(Rtrim(Ltrim(Name))) as Length 
FROM Temp

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    您可以按如下方式使用 Len 函数:

    SELECT *, LEN(Name) from Temp
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-24
      • 1970-01-01
      • 2013-11-28
      • 1970-01-01
      • 1970-01-01
      • 2021-03-07
      • 2021-04-08
      • 1970-01-01
      相关资源
      最近更新 更多