sql - SQL 从一个条目中选择两列
问题描述
如何在条目末尾使用正则表达式从一列中查询两列?
表图像:
IMAGE_NAME IMAGE_ID
---------------------------
image01_01.png 0
image01_02.png 1
image02_01.png 2
image02_02.png 3
select
IMAGE_NAME,
IMAGE_ID,
<img src="https://my_page?im_id='||IMAGE_ID||'" class="test" height="50" width="200">' IMAGE
from
IMAGES
where
IMAGE_NAME like '%01.png'
显示以图像名称结尾的 01.png 的所有图像。此外,我需要第二列显示所有以图像名称结尾的 02.png 图像。
如何实现此查询以获取两列?
编辑:我想在 Apex 的交互式报告中显示两个图像列。
编辑#2:显示带有 img 标签的图像时变得更加复杂。
预期的列结果应该是可以在 Apex 中显示的 html 图像对象:
https://my_page?im_id=0
Suffix_01 | Suffix_02 | Link to image_01 | Link to image_02
----------------+-----------------+------------------------+-----------------
image02_01.png | image02_02.png |https://my_page?im_id=2 | https://my_page?im_id=3
image01_01.png | image01_02.png |https://my_page?im_id=0 |https://my_page?im_id=1
解决方案
假设您想要一个具有相同前缀的单行图像名称的表。您可以对其使用条件聚合:
SELECT
t.suffix01,
t.suffix02,
'https://my_page?im_id=' || i1.image_id "Link to image_01",
'https://my_page?im_id=' || i2.image_id "Link to image_02"
FROM
(SELECT
MAX(CASE WHEN Image_name like '%01.png' THEN Image_name END) suffix01,
MAX(CASE WHEN Image_name like '%02.png' THEN Image_name END) suffix02
FROM
Images
GROUP BY
SUBSTR(image_name, 1, LENGTH(image_name) - 6)) t
JOIN
images i1 ON i1.image_name = t.suffix01
JOIN
images i2 ON i2.image_name = t.suffix02
结果:
suffix01 | suffix02 | Link to image_01 | Link to image_02
----------------+-----------------+-------------------------+------------------
image02_01.png | image02_02.png | https://my_page?im_id=2 | https://my_page?im_id=3
image01_01.png | image01_02.png | https://my_page?im_id=0 |https://my_page?im_id=1
推荐阅读
- sql - 寻找给定两列(名称和日期)的最小日期
- laravel - 集合在 Tinker 中按预期工作,但在控制器中我得到 BadMethod
- regex - 如何处理正则表达式中的内部标签?
- python - ValueError:在运行单元测试 Django ModelViewSet 时没有足够的值来解包
- asp.net - Asp.Net Web 应用程序 Web.Config 编辑以防止深度链接到子目录中的文件
- javascript - ScrollTo 在新浏览器和隐身模式下无法进行初始加载
- java - 排序集代码有什么问题?我的输出应该匹配样本
- r - 如何在代码中将列索引到单个变量中
- c# - 如何删除 Entity Framework .Core 中的一组记录?
- r - 有没有办法让 for 循环沿着列表的元素重复?