Oracle SQL-如何在另一个查询中选择子字符串索引?

Oracle SQL-如何在另一个查询中选择子字符串索引?,sql,oracle,Sql,Oracle,我正在编写一个查询,它从多个表返回一系列内容。主查询针对表_1。我需要从表7中的字段返回一个子字符串。但是我得到一个错误,子字符串索引是无效的标识符。我怎样才能达到预期的结果 我有一个表_1的字段列_1,它有3个以上的数据段,由“:”(空格-冒号-空格)分隔,我需要去掉第一个分隔符之前的文本,并返回其余部分(不管长度) 一个简化的例子: SELECT t1.name ,t1.address ,t1.phone ,t2. fave_brand ,SUBSTRING

我正在编写一个查询,它从多个表返回一系列内容。主查询针对表_1。我需要从表7中的字段返回一个子字符串。但是我得到一个错误,子字符串索引是无效的标识符。我怎样才能达到预期的结果

我有一个表_1的字段列_1,它有3个以上的数据段,由“:”(空格-冒号-空格)分隔,我需要去掉第一个分隔符之前的文本,并返回其余部分(不管长度)


一个简化的例子:

SELECT t1.name
    ,t1.address
    ,t1.phone
    ,t2. fave_brand
    ,SUBSTRING_INDEX(t3.fave_product, ' : ', -1) AS Fave Product
FROM table_1 t1
INNER JOIN table_2 t2
    ON t2.brand_SK = t1.fave_brand_FK
INNER JOIN table_3 t3
    ON t3.product_list_SK = t1.fave_products
WHERE <a series of constraints>;
选择t1.name
,t1.地址
,t1.电话
,t2。法乌品牌
,子串_索引(t3.fave_乘积,:,-1)作为fave乘积
来自表1 t1
内部联接表_2 t2
关于t2.brand_SK=t1.fave_brand_FK
内部联接表_3 t3
在t3.product\U list\U SK=t1.fave\U products上
哪里


请注意,我通常不是SQL开发人员,但后端开发人员正在休假,我的任务是拼凑这个补丁。我充其量只是个初学者

Oracle不支持
子字符串\u index()
。这是一个MySQL函数

您可以使用
regexp\u substr()
。没有样本数据,100%确定有点困难,但我认为您需要的逻辑是:

regexp_substr(t3.fave_product, '[^:]+$') as fave_product

Oracle不支持子字符串索引()。这是一个MySQL函数

您可以使用
regexp\u substr()
。没有样本数据,100%确定有点困难,但我认为您需要的逻辑是:

regexp_substr(t3.fave_product, '[^:]+$') as fave_product

在oracle中,您可以使用
regexp\u replace()

regexp\u replace()
将字符串中与作为第二个参数给出的regexp匹配的部分替换为作为第三个参数给出的值。这里,我们使用空字符串作为第三个参数,这意味着字符串的匹配部分被抑制

Regexp细分:

 ^       beginning of the string
 [^:]*   as many characters as possible other than ":" (possibly, 0 characters)
 :       character ":"

注意:包含特殊字符(如空格)的标识符需要双引号。

在oracle中,您可以使用
regexp\u replace()

regexp\u replace()
将字符串中与作为第二个参数给出的regexp匹配的部分替换为作为第三个参数给出的值。这里,我们使用空字符串作为第三个参数,这意味着字符串的匹配部分被抑制

Regexp细分:

 ^       beginning of the string
 [^:]*   as many characters as possible other than ":" (possibly, 0 characters)
 :       character ":"

注意:包含特殊字符(如空格)的标识符需要双引号。

我无法发布真实数据,但从功能上看,它看起来像:客户名称:行业:行业专业我需要第一个字符之后的所有内容”:(即除客户名称外的所有内容)三个数据点的每一个都有可变的字符长度。我无法发布真实数据,但从功能上看,它看起来像:客户名称:行业:行业专业我需要第一个数据点之后的所有内容):“(即除客户名称外的所有内容)三个数据点的每一个都有可变的字符长度。