【问题标题】:How do I extract only the second word of a string in SQL?如何在 SQL 中只提取字符串的第二个单词?
【发布时间】:2012-11-24 20:02:56
【问题描述】:

我试图弄清楚如何在供应商名称中只显示第二个单词,但我不断收到以下代码的错误:

SELECT SUBSTR(
SUBSTR(vendor_name,CHARINDEX(' ',vendor_name)+1,len(vendor_name)),1,CHARINDEX(' ',
SUBSTR(vendor_name,CHARINDEX(' ',vendor_name)+1,len(vendor_name)))
)
FROM vendors

有人可以帮忙吗

【问题讨论】:

  • 你是如何定义“单词”的?基于空间? “第二个词”实际上是“最后一个词”吗?给我们一些示例供应商名称,以便我们了解您正在使用什么。可能你最终会使用正则表达式。
  • 错误是什么?不要让我们猜测。
  • 联邦快递公司
  • United Parcel Service、Roadway Package System, Inc、Yesmed, Inc...这些是一些名称示例
  • ORA-00904: "CHARINDEX": 无效标识符 00904. 00000 - "%s: 无效标识符" *原因:*操作:第 2 行错误:第 2 列:68

标签: sql oracle substr


【解决方案1】:

CHARINDEX 不是 Oracle 函数。我认为最接近的匹配是 INSTR。您也可以使用 REGEXP_SUBSTR:

SELECT REGEXP_SUBSTR( vendor_name, '^[^ ]* ([^ ]*)', 1, 1, 'i', 1 )
  FROM vendors

这是SQLFiddle

【讨论】:

  • 在面对格式错误的输入时非常强大。谢谢!
猜你喜欢
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 2015-05-08
  • 2020-04-04
  • 2020-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多