我需要弄清楚如何在SQL中定界字符串

时间:2018-08-24 19:00:32

标签: sql ms-access

因此,我在atm上班,我有一位同事为我创建了一些SQL代码,以便从较大的描述字段中提取文本。我遇到的问题是它不会停止提取我需要的位置。在它看到“ Specifications:”一词或发现两个CRLF背对背时,我需要停止它。这将允许它仅获取我正在尝试的“功能”。

这是当前代码的示例:

SELECT IN_Desc, Replace(IN_Desc, Left(IN_Desc, InStr(IN_Desc, "- ") - 1), "")
FROM Inventory
WHERE IN_MfgName = "BERK"

下面是正在浏览的文字的示例:

  

Gu!具有比普通塑料诱饵高400倍的气味分散能力。   极高的气味分散度极大地扩展了打击区域,使   你钓到更多的鱼!更令人印象深刻的自然配方   Gulp!在现场测试中找出鱼的活饵。伯克利   lp!确实是下一代软饵!

     

功能:

     
      
  • 理想的跳汰机或拖车
  •   
  • 在针对大型鱼类时,最喜欢所有SW物种
  •   
  • 经过验证的尾部动作设计可以在所有条件下畅游
  •   
  • 与塑料诱饵相比,气味扩散区扩大了您的打击区域400倍
  •   
  • 15年的Gulp!进化……最好的不断进步
  •   
     

规格:

     
      
  • 诱饵长度:6英寸
  •   
  • 颜色:白色
  •   
  • 数量:每4
  •   
  • 包装:袋子
  •   

所需的输出:

  
      
  • 理想的跳汰机或拖车
  •   
  • 在针对大型鱼类时,最喜欢所有SW物种
  •   
  • 经过验证的尾部动作设计可以在所有条件下畅游
  •   
  • 与塑料诱饵相比,气味扩散区扩大了您的打击区域400倍
  •   
  • 15年的Gulp!进化……最好的不断进步
  •   

在此先感谢大家提供的所有帮助。

1 个答案:

答案 0 :(得分:2)

这有点丑陋,但似乎可以解决问题。可能需要进行一些调整才能准确获得所需的内容,但这将使功能与下一个双回车符/换行符之间的所有内容均得到补偿:

Mid(yourfield,InStr(1,yourfield, "Features:")+Len("Features:  "),InStr(InStr(1,yourfield, "Features:")+Len("Features:  "),yourfield, Chr(13) & Chr(10) & Chr(13)  & Chr(10))) 

我敢肯定,它可以写得更漂亮,但是我的访问就像地狱一样生疏。我觉得VBA UDF会干净很多,然后您可以使用正则表达式将其真正剥离。