【发布时间】:2020-02-23 01:31:14
【问题描述】:
【问题讨论】:
【问题讨论】:
您可以使用substring_index()。假设它是最后一个值:
select substring_index(image_description, 'image=', -1)
from t;
如果它可以在分号分隔列表中的任何位置:
select substring_index(substring_index(image_description, 'image=', -1), ';', 1)
from t;
Here 是一个 dbfiddle。
编辑:
在 Oracle 中,您只需使用 regexp_replace():
select regexp_replace(image_description, '^.*image=([^;]+).*', '\1')
from t;
Here 是这个版本的数据库小提琴。
剩下的就是简单地加入价值观。
【讨论】:
看起来您使用的是 Oracle 而不是 MySql,因此请尝试使用表 1 到表 2 的 left 连接和运算符 like 的此查询:
select t1.Name, t2."image id"
from table1 t1 left join table2 t2
on t1."image description" like '%image="' || t2.image || '" />'
这适用于您发布的示例数据,但如果image="..." 可能出现在字符串中的任何位置,则使用:
on t1."image description" like '%image="' || t2.image || '"%'
请参阅demo。
结果:
> NAME | image id
> :--- | -------:
> x | 1
> b | null
> y | 2
> z | 2
> a | null
【讨论】:
image= 与 t2.image 连接起来以返回类似 %image="xxx"%
假设列 image_desc 的值始终具有以文本模式 image=.... 结尾的相同格式,则以下方法可行。
SELECT SUBSTR(image_desc, LOCATE('image=', image_desc) + 6) AS image
FROM images;
【讨论】:
如果您的图像描述内容模式始终相同,并且您正在寻找的值在右侧 od = char
那么您可以通过这种方式检查 = char 之后的正确部分
对于mysql
select SUBSTRING_INDEX(your_column_name,'=',-1)
from your_table
where your_column_name like '%image%';
对于 Oracle,您可以使用
SUBSTR(youc_col, INSTR(you_col, '=') + 1)
select SUBSTR(youc_col, INSTR(you_col, '=') + 1)
from your_table
where your_column_name like '%image%';
【讨论】: