【问题标题】:SQL extracting text between charactersSQL提取字符之间的文本
【发布时间】:2019-07-21 09:39:30
【问题描述】:

我正在尝试提取两个字符之间的字符串。任何数字的长度都可能发生变化。我试图提取的值只是例如0001A、0002BB、0003C等

使用select SUBSTRING(ordtxt,7,4) as ordtxt,我只能从左侧提取 x 个字符,这并不是我真正想要的。

100/0/0001A/001
101/000/0002BB/001
102/00/0003C/0001

感谢您的帮助。

【问题讨论】:

  • 为什么你想要这些数字,而不是 001、00 或 102?
  • 这个 [链接](stackoverflow.com/questions/11010453/…) 可能会有所帮助
  • 所以你想要第二个/和第三个/之间的数字?
  • 霍根,正确的。

标签: sql sql-server tsql substring


【解决方案1】:

您可以使用简单的 XML 方法,将值与分隔字符串隔离

 SELECT
   convert(xml,'<x>'+replace(YourColumn,'/','</x><x>')+'</x>').value('/x[3]','varchar(100)')
 FROM YourTable

解决方案将字符串分解为由数字索引表示的位置,只需选择所需的元素即可。

例如,如果您需要 0001、0002、0003,则在上面的函数中使用位置 3。

语法基于 SQL Server

【讨论】:

  • 我不知道如何在 SQL 女士中使用 XML
  • 你只需将它包含在 select 语句中
  • 谢谢吉米。我尝试了您更新的 select 语句,但在 '=' 附近出现等号错误语法错误。
  • @V.Bach 删除 YourColumn =
  • 哦,效果很好。感谢吉米和福帕斯的帮助!
猜你喜欢
  • 1970-01-01
  • 2018-10-04
  • 2014-03-26
  • 1970-01-01
  • 1970-01-01
  • 2018-02-07
  • 2018-11-02
  • 2021-08-30
  • 1970-01-01
相关资源
最近更新 更多