如何在把超过固定长度的文字以……表示

有次,有个以前的同事(是个小MM)问我一个问题:她想在一个网页中显示一个文章标题的列表,但是考虑到有的标题太长,影响美观,就想参照别的网站上的样式,把超过固定长度的文字用省略号代替,但是自己又不知道如何实现,所以想到我(唉,需要我的时候才会想到我,呜……)
拿到题目后,我决定从数据库来着手,写查询语句来实现,结果如下:

说明语句:

SELECT (LEFT(原字段,位数)+'...') AS 新字段
FROM 表名 WHERE DATALENGTH(原字段)>位数
UNION ALL
SELECT 原字段 AS 新字段 FROM 表名 WHERE DATALENGTH(原字段)<=位数

后来考虑到ACCESS中不支持DATALENGTH()函数,所以改为LEN(),不过这样的话,中文字也算作一位,而不是原来的两位。

最后写成:
select top 5 * from(
SELECT id,(LEFT([description],25)+'...') AS descriptionx,kind,datetime, description, author, hit FROM [xjx] WHERE len(description)>25
UNION ALL
SELECT id,description AS descriptionx,kind,datetime, description, author, hit FROM [xjx] WHERE len(description)<=25) TempTable where kind='活动简报' o

时间: 2024-08-31 01:42:42

如何在把超过固定长度的文字以……表示的相关文章

固定长度字符串数组如何实现

问题描述 PrivateTypeHY_RT_SlLeftAsLonglRightAsLonglTopAsLonglBottomAsLongEndTypePrivateTypeID_CD_SsText(10)AsString*256Rect(10)AsHY_RT_SEndType请问上面两个vb程序如何转为vb.net,谢谢 解决方案 解决方案二:.net已经没有固定长度字符串,改如下PublicStructureHY_RT_SDimlLeftAsIntegerDimlRightAsInteger

实现一个固定长度的集合队列

在开发中,有时候我们会遇到这样的需求: 对一个集合操作,提前为集合指定最大大小,在我们不断向集合中添加数据的时候,当数据内容超过最大值的时候,自动将最先入队的元素移除队列. 实现方法很简单,代码如下 package com.test.limitqueue; import java.util.Collection; import java.util.Iterator; import java.util.LinkedList; import java.util.Queue; /** * 实现一个固定

Windows系统时间如何转化为固定长度为8位的字符串

public string GetString(string data) { string DataFormat = string.Empty; if (data.Length == 10)//2014/11/23 { DataFormat = data.Replace("/", ""); } if (data.Length == 9)//2014/11/1或者2014/1/12 { //该函数是先截取再替换 if (data.Substring(4, 3).Rep

substring-给一个文件夹地址,此地址中xxx是不固定长度的任意字符串 要怎么截取到这个xxx

问题描述 给一个文件夹地址,此地址中xxx是不固定长度的任意字符串 要怎么截取到这个xxx 地址如下:E:workspacetrunkProject...ToolsV12DataBackup_xxx_yy-MM-dd_hh'mm 这是我自己的代码 为什么输出的还是原来的字符串? 表示我是菜鸟 求大神指教string str="E:workspacetrunkProject...ToolsV12DataBackup_xxx_yy-MM-dd_hh'mm"";str.Substr

RegularExpressionValidator 判断输入框 txtZumenmeisyo 的输入是否超过指定长度,正则表达是该怎么写

问题描述 <asp:RegularExpressionValidatorID="RegularExpressionValidator1"ControlToValidate="txtZumenmeisyo"ErrorMessage="1"runat="server"ValidationExpression="[wW]{2,}"></asp:RegularExpressionValidator

c++-C++下int型转换成固定长度二进制字符串

问题描述 C++下int型转换成固定长度二进制字符串 我想把int型的数据转换成32位的01字符串 用itoa函数的话,前面的0好像会被忽略掉,有什么简单的函数可以用? 解决方案 int main() { char str[] = "00000000000000000000000000000000"; int n = 1234; for (int i = 0; i < 32; i++) if (((1 << i) & n) == (1 << i))

mfc绘图-MFC中怎么才能画固定长度的直线?

问题描述 MFC中怎么才能画固定长度的直线? 只知道起点,不知道终点...而且不能重叠,所以我想用正多边形,正多边形中心点到各点距离相等,且不重叠,,但是正多边形又不能得到中心点.....怎样才能得到中心点??或者有更好的办法可以画,而且可以得到直线的终点? 解决方案 正多边形求中心点这是数学问题吧 解决方案二: 你只说画固定长度的直线,但还是没把意思说清楚. 你一这个点为圆心,用Ellipse()方法绘制一个圆,外部图形和这个圆的交点就是你要的点,不过交点左边不好求. 再就是风雨你要画直线的长

数据接受-TCP根据数据包头接收固定长度数据

问题描述 TCP根据数据包头接收固定长度数据 用c++语言实现,tcp /ip接收数据,接收的方式是阻塞的,通过数据包头解析出数据整个的长度,假如包头是4个字节,如何遍历数据找到包头再去接收数据,,,求高手指导啊 解决方案 先收四个字节,判断是不是合法的包头,如果是,解析包体的长度,然后接收:如果不是合法的包头,关闭连接或继续接收下四个字节

tcp如何遍历帧头接收固定长度的数据

问题描述 tcp如何遍历帧头接收固定长度的数据 c++的tcp如何遍历帧头接收固定长度的数据........................................................................... 解决方案 要定义固定的头 比如0x000001为头 然后数据里面要做防竞争处理,其实就是数据里面出现0x000001,发送方就要用其他数据替换或者插值,接收方接收数据后再还原.