【问题标题】:Meaningful string limiting有意义的字符串限制
【发布时间】:2011-10-10 12:07:29
【问题描述】:

我的表格中有一些行包含长度介于 31 到 281 个字符之间的文本。

我不想在我的网页上的表格中显示所有这些文本,我想将此文本限制为几个字符,以便用户识别它。

我所做的是select left(ColumnName, 30),但这种方式在页面上相当难看,因为它会切断单词中间的文本。 任何人都可以建议一种方法来打破它的字符或在我的页面上显示更好的东西吗?

【问题讨论】:

    标签: sql vb.net string text


    【解决方案1】:

    代码:

    declare @columnname nvarchar(281)
    set @columnname = 'Rather than display all this text in my table on my webpage, I''d like to limit this text to a few characters long so as to identify it to the user.'
    
    select case when charindex(' ', @columnname, 30) > 30 
      then left(@columnname, charindex(' ', @columnname, 30)) else @columnname end
    

    结果:

    Rather than display all this text 
    

    【讨论】:

    • 谢谢,我可以看到我将来会经常使用 charindex(),+1 并回答
    • @LoganYoung 谢谢你的意思,我做了一个重要的改变,你应该包括在内,这样你就不会丢失数据。
    【解决方案2】:

    处理它的一种方法是使用CHARINDEX 函数修改您现有的解决方案,如下所示:

    select left(ColumnName, charindex(' ', ColumnName, 30) - 1)
    from TableName
    

    这将找到从位置 30 开始的第一个空格,并将其左侧的所有内容返回。

    更多信息,请看这里:http://msdn.microsoft.com/en-us/library/ms186323.aspx

    【讨论】:

    • 谢谢,+1 但 t-clausen.dk 先发帖,所以他得到了答复
    • 我首先尝试过,假设列名仅包含 20 个字符。这将导致它返回空白结果
    • 如果列名只包含 20 个字符,您可能还是想调整限制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多