SQL截取两个特定值之间的文字

如有数据列T,值为1一别之后2两地相悬3只说是三四月5又谁知五六年……如何将1、2、3、5之间的值拆分出来,字数不固定,且拆分截断字符也不一定是数字求高手sql语句写法,... 如有数据列T,值为1一别之后2两地相悬3只说是三四月5又谁知五六年……
如何将1、2、3、5之间的值拆分出来,字数不固定,且拆分截断字符也不一定是数字
求高手sql语句写法,最好可以写个函数:
SELECT Fun_Split(T,'3','5') 得出"只说是三四月"
展开
 我来答
汐日南莘
推荐于2016-03-10 · TA获得超过1.4万个赞
知道大有可为答主
回答量:1.6万
采纳率:45%
帮助的人:7574万
展开全部
  sql截取 两个特定值之间的文字
  可以使用substring() 截取 和 charindex()
  CHARINDEX函数调用方法如下:
CHARINDEX ( expression1 , expression2 [ , start_location ] )
Expression1是要到expression2中寻找的字符中,start_location是CHARINDEX函数开始在expression2中找expression1的位置。

  substring函数调用方法如下:
  substring(string,startNumber, endNumber)

  返回第一个参数中从第二个参数指定的位置开始、第三个参数指定的长度的子字符串
  例子:
  CHARINDEX('SQL', 'Microsoft SQL Server')
这个函数命令将返回在“Microsoft SQL Server”中“SQL”的起始位置,在这个例子中,CHARINDEX函数将返回“S”在“Microsoft SQL Server”中的位置11。

  SubString("12345",2,3)
  调用以下函数返回“2345”:
  假设你要显示Northwind数据库Customer表前5行联系人列的Last Name。这是前5行数据
ContactName
------------------------------
Maria Anders
Ana Trujillo
Antonio Moreno
Thomas Hardy
Christina Berglund
你可以看到,CustomName包含客户的First Name和Last Name,它们之间被一个空格隔开。我用CHARINDX函数确定两个名字中间空格的位置。通过这个方法,我们可以分析ContactName列的空格位置,这样我们可以只显示这个列的last name部分。这是显示Northwind的Customer表前5行last name的记录!
select top 5 substring(ContactName,charindex(’ ’,ContactName)+1 ,
len(ContactName)) as [Last Name] from Northwind.dbo.customers
下面是这个命令输出的结果。
Last Name
------------------------------
Anders
Trujillo
Moreno
Hardy
Berglund
szm341
推荐于2017-12-16 · TA获得超过6726个赞
知道大有可为答主
回答量:5005
采纳率:100%
帮助的人:5162万
展开全部
你如果只要指定字符之间的,那么直接截取就行了啊
sqlserver:
select substring(t,charindex('3',t)+1,charindex('5',t)-charindex('3',t)-1)
更多追问追答
追问
数字之间是可以的,但如果是英文或者汉字,应如何截取?
例如:T值为“一别之后 两地相悬 只说是三四月 又谁知五六年”
任意截取两个字或者两个词之间的文字,
如:截取“两地”、“三四”之间的文字,输出结果为“相悬 只说是”
追答
select substring(t,charindex('两地',t)+2,charindex('三四',t)-charindex('两地',t)-2)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式