2010-09-20 107 views
0

我有一个sql字段,我需要编辑左侧和右侧的字符。
表名是:CDR
字段名是:dstchannel
的dstchannel字段显示下列数据:本地/ 872 @从内部-6acb,1
我只需要872作为输出
的字段总是具有相同数量的数据,所以872将在其位置上受到约束。
我将如何去为MySQL编写一个SQL查询?SQL查询删除字段中的左侧和右侧字符

如果我有另一个查询,我想包括这个,我该怎么做?

谢谢

+0

将要始终检索值是三个长字符? – 2010-09-20 04:59:25

+0

是的,该值将始终是三个字符长 – 2010-09-20 05:28:42

回答

1

假设数总是在长度为3个字符:

SELECT 
    SUBSTRING(dstchannel, 7, 3) AS x 
FROM cdr 

如果该号码的长度是可变的,你需要去寻找“@”。在T-SQL(SQL Server)的,你可以使用CHARINDEX

SELECT 
    SUBSTRING(dstchannel, 7, CHARINDEX('@', dstchannel, 7) - 7) AS x 
FROM cdr 
+0

现在如何添加SELECT SUBSTRING(dstchannel,7,3)AS x从cdr – 2010-09-20 05:35:36

+0

到此查询选择cdr.userfield,campaignlist.campaignnumber,campaignlist.campaignname,employeelist.employeeid ,employeelist.employeename,cdr.disposition,cdr.calldate,cdr.duration,cdr.uniqueid,cdr.accountcode,x从campaignlist内部加入cdr在cdr.userfield = campaignlist.campaignnumber内部加入employeelist在employeelist.employeeid = x其中cdr .disposition ='ANSWERED'and cdr.dst = 8010 – 2010-09-20 05:36:56

+0

只需在SUBSTRING(dstchannel,7,3)AS x中替换查询中的x – 2010-09-20 08:09:28

0

如果分隔符总是 '/' 和 '@':

select substring(dstchannel, 
    locate('/', dstchannel) + 1, 
    locate('@', dstchannel) - locate('/', dstchannel) - 1);