有没有一种方法来获得选择查询中的输出字符串中的特殊字符之间的子字符串的输出

时间:2018-12-26 09:40:10

标签: sql

我正在使用选择查询并从表中输出2列。一列包含以特殊字符“:”分隔的字符串中的数据。我需要使用特殊字符的第一个实例和特殊字符的第二个实例之间的字符串输出从列中输出数据

表-ACC_TABLE 使用的命令:

select SC_NAME, SUBSTR(PROP,1,30)
from ACC_TABLE where PROP like '%REC%' and like PROP like '%NEC%'

前2行的输出-

SC_NAME  PROP

00000   {"sender":"","message":"@{source.message

1000NN  {"sender":"REC","message":"Dear Custo

2040NN  {"sender":"NEC@notify.com","message":"Dear Custo

我需要从列名PROP中获取唯一的发件人,即在第一个“发件人”:“和”之间,这些值也不是特定长度,因此我不能使用固定宽度的标准substr。 / p>

select SC_NAME, SUBSTR(PROP,1,30)
from ACC_TABLE where PROP like '%REC%' and like PROP like '%NEC%'

有望获得 区别和唯一的发件人,即列名PROP中的第一个“ sender”:“”和“,”之间,这些值也不是特定长度,因此我不能使用固定宽度的标准substr。

1 个答案:

答案 0 :(得分:0)

使用以下逻辑仅获取发件人名称/ id。

只需添加另一列并使用此逻辑即可转换实际列,并使用distinct获得唯一的发件人

选择
相反( 子串( reverse(substring(replace(substring('{“ sender”:“ REC”,“ message”:“ Dear Custo',1,patindex('%message%','{” sender“:” REC“,” message“ :“尊敬的Custo')-1),'发送方',''), patindex('%[A-Za-Z0-9]%',replace(substring('{“ sender”:“ REC”,“ message”:“ Dear Custo',1,patindex('%message%',' {“ sender”:“ REC”,“ message”:“ Dear Custo')-1),'sender','')), len(replace(substring('{“ sender”:“ REC”,“ message”:“ Dear Custo',1,patindex('%message%','{” sender“:” REC“,” message“:”尊敬的Custo')-1),'sender',''))))), patindex('%[A-Za-Z0-9]%', reverse(substring(replace(substring('{“ sender”:“ REC”,“ message”:“ Dear Custo',1,patindex('%message%','{” sender“:” REC“,” message“ :“尊敬的Custo')-1),'发送方',''), patindex('%[A-Za-Z0-9]%',replace(substring('{“ sender”:“ REC”,“ message”:“ Dear Custo',1,patindex('%message%',' {“ sender”:“ REC”,“ message”:“ Dear Custo')-1),'sender','')), len(replace(substring('{“ sender”:“ REC”,“ message”:“ Dear Custo',1,patindex('%message%','{” sender“:” REC“,” message“:”尊敬的Custo')-1),'sender','')))))), len(reverse(substring(replace(substring('{“ sender”:“ REC”,“ message”:“ Dear Custo',1,patindex('%message%','{” sender“:” REC“,” message“:”尊敬的Custo')-1),'sender',''), patindex('%[A-Za-Z0-9]%',replace(substring('{“ sender”:“ REC”,“ message”:“ Dear Custo',1,patindex('%message%',' {“ sender”:“ REC”,“ message”:“ Dear Custo')-1),'sender','')), len(replace(substring('{“ sender”:“ REC”,“ message”:“ Dear Custo',1,patindex('%message%','{” sender“:” REC“,” message“:”尊敬的Custo')-1),'sender','')))))))) )