SQL server 2008中怎么读取一个长句中的前N个字符

比如在数据库中存储为
id 简介
1 简介长度1
2 简介长度22
3 简介长度333
要求读取出来的表格为
id 简介
1 简介长度1
2 简介长度2...
3 简介长度3...
求怎么写SQL语句。

用substring函数。
SUBSTRING ( expression, start, length )
返回第一个参数中从第二个参数指定的位置开始、第三个参数指定的长度的子字符串。

expression
字符串、二进制字符串、文本、图像、列或包含列的表达式。请勿使用包含聚合函数的表达式。
start
整数或可以隐式转换为 int 的表达式,指定子字符串的开始位置。
length
整数或可以隐式转换为 int 的表达式,指定子字符串的长度(但是结果并补一个返回length字符长度,要看expression的长度和start的设置!)。
返回值
如果 expression 是一种支持的字符数据类型,则返回字符数据。如果 expression 是一种支持的二进制数据类型,则返回二进制数据。
举例:
substring('98765',-1,3) 结果:9
substring('98765',0,3) 结果:98
substring('98765',1,3) 结果:987
SQL语句中expression可以直接写字段名 select id,简介=substr(简介,1,5) from tb
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-08-30
一般这种问题用charindex和substring组合,就可以解决追问

请问具体应该怎么写呢

追答

你这里简介列条件不明确啊,比如:如果你的简介列都是以“简介长度”4个字开头的话,那就

--表示从“简介”列第5位开始取一个字符后连接
select id,'简介长度'+substring(简介,5,1) from tableName

追问

简介长度只是test而已,可能是任何字符,只取前4个字符,若总的长度多余4个字符第四个字符以后显示...,少于四个字符就读取全部了。

追答

长度多余4个字符第四个字符以后显示什么?5个吗?那就直接,不足4的一样显示
select id,substring(简介,1,5) from tableName

这里是substring的用法:

http://msdn.microsoft.com/zh-cn/library/ms187748.aspx
这里是charindex的用法:
http://msdn.microsoft.com/zh-cn/library/ms186323.aspx
你先搞清楚自己的需求,然后再利用这2个函数去截取需要的字符串。

本回答被提问者采纳
相似回答