以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  如何用SQL语句提取字符串  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=76382)

--  作者:lihe60
--  发布时间:2015/10/28 8:10:00
--  如何用SQL语句提取字符串

数据库信息

 

科目名称

银行存款\\中行\\北京支行

银行存款\\中行\\天津支行

银行存款\\中行\\天津支行

银行存款\\农行\\北京支行

现金\\备用金

 

科目名称列有上述若干行数据,如何提取第一个“\\”字符前面的字符生成下面的表

 

科目名称

银行存款

现金


--  作者:Hyphen
--  发布时间:2015/10/28 8:59:00
--  

sqlserver这样用

sele ct substring(科目名称,0,PATINDEX(\'%\\%\',科目名称)) as 科目名称 from 表A


--  作者:大红袍
--  发布时间:2015/10/28 9:04:00
--  

1、查找\\的位置;

 

2、用substring截取

 

参考函数

 

http://www.foxtable.com/help/topics/0692.htm

 

http://www.foxtable.com/help/topics/1827.htm

 


--  作者:lihe60
--  发布时间:2015/10/28 12:10:00
--  

科目名称

 

银行存款

银行存款\\中行

银行存款\\农行

现金

现金\\备用金

 

这样的表有办法截取吗?


--  作者:大红袍
--  发布时间:2015/10/28 12:21:00
--  

看3楼的提示。比如如果是access,就写

 

iif(InStr(科目名称, \'\\\') > 0, Mid(科目名称, 1, InStr(科目名称, \'\\\')), 科目名称)


--  作者:lihe60
--  发布时间:2015/10/28 14:08:00
--  
以下是引用大红袍在2015/10/28 12:21:00的发言:

看3楼的提示。比如如果是access,就写

 

iif(InStr(科目名称, \'\\\') > 0, Mid(科目名称, 1, InStr(科目名称, \'\\\')), 科目名称)

这个代码用SQL数据库没有反应的。


--  作者:大红袍
--  发布时间:2015/10/28 14:45:00
--  
select (case when CharIndex(科目名称,\'\\\') >= 0 then Substring(科目名称,0,CharIndex(科目名称,\'\\\')) else 科目名称 end) as 科目名称 f rom {表A}