0

我在 SQL Server 2008 中有一个存储 KPI 目标数据的文本字段(“Employs”表中名为“BiographyText”的字段):

rebfirst60,
reifirst1.3,
retfirst50

第一个目标是 RebFirst 的 60,第二个目标是 ReiFirst 的 1.3,第三个 RetFirst 的目标是 50。

我希望能够返回 3 个不同的数值,因为这些数值将被视为某个员工的每个 kpi 的目标。

我有一个完整的思维障碍,试图找出最好的方法来做到这一点,有什么建议/帮助吗?

总的来说,我试图找到 kpiname(“rebfirst”),然后检索接下来的 2 个字符/数字

我尝试了以下方法,但它在第一个子字符串的函数 2 上出错,因为它是非数字的:

select SUBSTRING(biographytext,SUBSTRING('rebfirst',1,2),2) from employs

谢谢

4

3 回答 3

2

试试这个

SELECT 
    CASE WHEN PatIndex('%[a-z]%',REVERSE(BiographyText)) > 0
      THEN RIGHT(BiographyText,PatIndex('%[a-z]%',REVERSE(BiographyText))-1)
      ELSE '' END AS target 
FROM employs

使用函数检查另一个解决方案

于 2013-04-08T12:12:20.760 回答
0

从 Post第一个目标是 60,对于 RebFirst,第二个是 ReiFirst 的 1.3,第三个目标是 50,RetFirst。

从评论我不需要实际的 kpiname 只是值

下面Query将给你答案。

select case column_name when 'rebfirst60' then 60
       when 'reifirst1.3' then 1.3
       when 'retfirst50' then 50
from employs
于 2013-04-08T11:07:27.987 回答
0

我现在通过使用以下内容获得了这个:

select 
SUBSTRING(SUBSTRING(biographytext,1,10),9,2) as RebookingFirst,
SUBSTRING(SUBSTRING(biographytext,11,20),12,3) as ReInventFirst,
SUBSTRING(SUBSTRING(biographytext,21,30),16,3) as ReCreateFirst,
SUBSTRING(SUBSTRING(biographytext,31,40),20,2) as RetentionFirst,
SUBSTRING(SUBSTRING(biographytext,41,50),23,2) as ReferralsFirst
from employs

这给了我每个 kpi 的结果

于 2013-04-08T11:21:42.457 回答