我在SQL Server 2008中有一个文本字段(“Employs”表中名为“BiographyText”的字段),用于存储KPI目标数据:
rebfirst60,
reifirst1.3,
retfirst50
第一个目标是60,对于RebFirst,第二个目标是ReiFirst为1.3,第三个为RetFirst为50。
我希望能够返回3个不同的数值,因为这些数值将被视为某个员工每个kpi的目标。
我有一个完整的思维模块试图找出最好的方法,任何建议/帮助?
总的来说,我试图找到kpiname(“rebfirst”),然后检索接下来的2个字符/数字
我尝试了以下内容,但它在第一个子字符串的函数2上出错,因为它是非数字的:
select SUBSTRING(biographytext,SUBSTRING('rebfirst',1,2),2) from employs
由于
答案 0 :(得分: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
答案 1 :(得分:0)
从帖子 第一个目标是60,对于RebFirst,第二个目标是ReiFirst为1.3,第三个为RetFirst为50。
来自评论 我不需要实际的kpiname只是值
以下Query
将为您提供答案。
select case column_name when 'rebfirst60' then 60
when 'reifirst1.3' then 1.3
when 'retfirst50' then 50
from employs
答案 2 :(得分: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的结果